小编典典

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

python

本质上,我只是在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参数传递,问题仍然存在。 也许这与金字塔的多重预测的工作方式有关?


阅读 167

收藏
2021-01-20

共1个答案

小编典典

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

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

2021-01-20