【问题标题】:Pyramid Replacing Double Forward-Slash in URL Matchdict金字塔替换 URL Matchdict 中的双正斜杠
【发布时间】:2012-06-11 22:30:59
【问题描述】:

本质上,我只是在 Pyramid 内部构建一个 API 重定向路由,以在不使用 JSONP 的情况下处理跨域 AJAX 请求。

我添加了一条路线,如下所示:

config.add_route("api","/api/{url:.*}")

我想用它来捕获这样的 URL:

http://domain.com/api/http://location.of/other/api

但是,当从请求匹配字典中获取捕获的 URL 后缀时,我得到以下信息:

http:/location.of/other/api

我猜在 URL 处理/匹配过程中进行了一些转义?如何避免这种情况,并使用两个正斜杠获取所需的 URL?

即使我将 URL 作为 GET 参数传入,问题仍然存在。也许这与 Pyramid 的 multidicts 的工作方式有关?

【问题讨论】:

    标签: python regex pyramid


    【解决方案1】:

    这是任何基于 WSGI 的应用程序的基本限制。在将 URL 传递给 WSGI 应用程序之前,URL 会经过 urldecode 并压缩斜线。如果要保留斜杠,则需要对它们进行两次 urlencode。 AFAIK 无法使用查询字符串解决此问题。

    我想我应该指出原始 URL 是可用的,但是您必须从中解析出您自己关心的部分。它位于request.urlrequest.path_info 是 Pyramid 和大多数 WSGI 应用程序用来调度 URL 的,因为它只包含与应用程序安装位置相关的子路径。

    【讨论】:

    • 太棒了,感谢您的见解:) 我已经使用一个标志来确定是否使用 https,并让用户省略前缀,我将在路由期间附加。这似乎是最可靠的方法。
    猜你喜欢
    • 1970-01-01
    • 2015-03-26
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    相关资源
    最近更新 更多