金字塔替换URL Matchdict中的双正斜杠

发布于 2021-01-29 15:02:40

本质上,我只是在Pyramid内部构建API重定向路由,以处理跨域AJAX请求,而无需使用JSONP。

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

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

我想用它来捕获如下URL:

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

但是,当从Request matchdict中获取捕获的URL后缀时,我得到以下信息:

http:/location.of/other/api

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

即使我将URL作为GET参数传递,问题仍然存在。 也许这与金字塔的多重预测的工作方式有关?

关注者
0
被浏览
56
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

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

    我想我应该指出原始URL是可用的,但您必须从中解析出您关心的部分。它在request.urlrequest.path_info是金字塔和大多数WSGI应用程序用来分发URL的方法,因为它仅包含相对于应用程序安装位置的子路径。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看