映射特定 url 以响应 Cherrypy?
Map specific url to response with Cherrypy?
我正在使用 CherryPy 编写网络应用程序,我需要映射 URL /.well-known/acme-challenge/KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU
响应 KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU.8bOE0CjbktH8JYB_jq5aFEqbG-37XhHjDAIhWppNkdQ 以获得 ssl 证书。
我试过使用像
这样的别名
cherrpypy.expose("/.well-known/acme-challenge/KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU")
def ssl_cert_map(self):
return "KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU.8bOE0CjbktH8JYB_jq5aFEqbG-37XhHjDAIhWppNkdQ"
然而,当我尝试通过 /.well-known/acme-challenge/KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU 访问它时,出现 404 错误。
我怎样才能做到 /.well-known/acme-challenge/KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU 给我 KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU.8bOE0CjbktH8JYB_jq5aFEqbG-37XhHjDAIhWppNkdQ ?
您没有在 cherrypy.expose
方法中提及 URL。 expose 方法公开您的 class 方法以供 Cherrypy 使用。
为了将您的 URL 映射到特定方法,您必须使用 RoutesDispatcher
。
示例:
import cherrypy
class Root:
cherrpypy.expose
def ssl_cert_map(self):
return "KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU.8bOE0CjbktH8JYB_jq5aFEqbG-37XhHjDAIhWppNkdQ"
app_dispatcher = cherrypy.dispatch.RoutesDispatcher()
app_dispatcher.connect(
name='ssl-cert',
route='/.well-known/acme-challenge/KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU',
action='ssl_cert_map',
controller=Root())
if __name__ == '__main__':
server_config = {
'/': {
'request.dispatch': app_dispatcher
}
}
cherrypy.tree.mount(root=None, config=server_config)
cherrypy.engine.start()
参考:cherrypy - URL dispatcher
我正在使用 CherryPy 编写网络应用程序,我需要映射 URL /.well-known/acme-challenge/KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU 响应 KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU.8bOE0CjbktH8JYB_jq5aFEqbG-37XhHjDAIhWppNkdQ 以获得 ssl 证书。
我试过使用像
这样的别名cherrpypy.expose("/.well-known/acme-challenge/KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU")
def ssl_cert_map(self):
return "KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU.8bOE0CjbktH8JYB_jq5aFEqbG-37XhHjDAIhWppNkdQ"
然而,当我尝试通过 /.well-known/acme-challenge/KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU 访问它时,出现 404 错误。 我怎样才能做到 /.well-known/acme-challenge/KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU 给我 KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU.8bOE0CjbktH8JYB_jq5aFEqbG-37XhHjDAIhWppNkdQ ?
您没有在 cherrypy.expose
方法中提及 URL。 expose 方法公开您的 class 方法以供 Cherrypy 使用。
为了将您的 URL 映射到特定方法,您必须使用 RoutesDispatcher
。
示例:
import cherrypy
class Root:
cherrpypy.expose
def ssl_cert_map(self):
return "KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU.8bOE0CjbktH8JYB_jq5aFEqbG-37XhHjDAIhWppNkdQ"
app_dispatcher = cherrypy.dispatch.RoutesDispatcher()
app_dispatcher.connect(
name='ssl-cert',
route='/.well-known/acme-challenge/KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU',
action='ssl_cert_map',
controller=Root())
if __name__ == '__main__':
server_config = {
'/': {
'request.dispatch': app_dispatcher
}
}
cherrypy.tree.mount(root=None, config=server_config)
cherrypy.engine.start()
参考:cherrypy - URL dispatcher