我正在使用cherrypy在两个不同的端口上提供服务。 一个端口可从外部到达,一个仅在本地使用。 如果您使用正确的端口,某些页面应该只显示。
目前,我正在检查cp.request.local.port
以找出答案
页面调用的当前端口号,如下例所示。
此处在端口1700上仅允许索引页面,/secret
页面被阻止。在端口1701上都显示了。
有没有更好的方法将RootServer2
类绑定到特定端口?
import cherrypy as cp
class RootServer:
def __init__(self):
pass
# Starting page
@cp.expose
def index(self):
return '<html><body>Access from port: {}'.format(cp.request.local.port)+'</body></html>'
class RootServer2:
@cp.expose
def index(self):
if cp.request.local.port <> 1701:
raise cp.HTTPError(403)
return '<html><body>Access from port: {}'.format(cp.request.local.port) + '</body></html>'
if __name__ == '__main__':
cp.server.unsubscribe() # remove the default port 8080
cp.tree.mount(RootServer(),'',{})
cp.tree.mount(RootServer2(),'/secret',{})
cp._cprequest.Request.show_tracebacks = False
server1 = cp._cpserver.Server()
server1.socket_port = 1700
server1._socket_host = '0.0.0.0'
server1.thread_pool = 200
server1.subscribe()
server2 = cp._cpserver.Server()
server2.socket_port = 1701
server2._socket_host = '0.0.0.0'
server2.thread_pool = 200
server2.subscribe()
cp.engine.start()
cp.engine.block()