将特定网址映射到Cherrypy的响应?

问题描述 投票:0回答:1

我正在写与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?

python routing cherrypy
1个回答
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

© www.soinside.com 2019 - 2024. All rights reserved.