1

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

4

1 回答 1

4

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

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

于 2012-06-08T00:12:13.093 回答