python - 使用 Cherrypy 映射特定 url 以响应?
问题描述
I'm writing a web app with CherryPy and I need to map the URL /.well-known/acme-challenge/KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU to the response KH5LEgbLPhDrhJ-BAf7cyTXe8qcN6kL4CJQMOLe1fXU.8bOE0CjbktH8JYB_jq5aFEqbG-37XhHjDAIhWppNkdQ inorder to obtain a ssl certificate.
我试过使用别名,比如
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_jqDhWppG-37XhHjN?
解决方案
您没有在cherrypy.expose
方法中提及 URL。Expose 方法公开您的类方法以供 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()
推荐阅读
- python-3.x - 仅当数据库中的某些值尚不存在但有些值存在时,如何创建新的新数据库条目?
- bash - 将特定文件从子目录复制到一个目录
- debugging - 如何使用标准钩子在 Lua 中实现断点?
- ruby - Ruby 中关于 While 循环的语法
- python - 如何将字典从 file1.py 导入到 file2.py
- javascript - 用于 Skype 的 URI 到 Skype for business
- apache-spark - aws emr 没有工人添加到 spark 工作
- makefile - 构建 syslog-ng 时无法在 Mac OSX 10.14 上找到 lcrypto
- javascript - 包含非数字键的 JavaScript 数组的正确术语是什么?
- css - 选择容器中的最后两行