我正在使用CherryPy编写Web应用程序,并且需要映射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?
答案 0 :(得分:1)
您没有在cherrypy.expose
方法中提及该URL。 Exposure方法公开您的类方法供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()