【问题标题】:Map specific url to response with Cherrypy?使用 Cherrypy 映射特定 url 以响应?
【发布时间】:2019-04-21 02:17:03
【问题描述】:

我正在使用 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-37XhN?

【问题讨论】:

    标签: python routing cherrypy


    【解决方案1】:

    您没有在 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()
    

    参考:cherrypy - URL dispatcher

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-20
      • 2012-06-23
      • 2019-09-24
      • 1970-01-01
      • 1970-01-01
      • 2014-11-16
      • 2019-11-27
      • 1970-01-01
      相关资源
      最近更新 更多