当前位置: 首页 > 面试题库 >

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

常炯
2023-03-14
问题内容

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


问题答案:

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

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



 类似资料:
  • 问题内容: 我有一个字符串“ \\ u003c”,它属于UTF-8字符集。由于存在双反斜杠,因此我无法将其解码为unicode。如何从“ \\ u003c”获取“ \ u003c”?我正在使用Java。 我尝试过 但无法实现我想要的。 这是我的代码 文件的内容是 \ u003c 问题答案: 不知道您是否仍在寻找解决问题的方法(因为您已经接受了答案),但是我仍然会添加我的答案作为针对 所述问题 的可

  • 我正在尝试用单个反斜杠替换所有双反斜杠。我想将替换为。我以为python将视为一个反斜杠,将视为带有两个反斜杠的字符串。但是当我尝试时 因此,我尝试用原始字符串切换替换字符串: 这不是我需要的。所以我只尝试了原始字符串中的一个反斜杠:

  • 所以,我在Node.js中使用multer,它给出了上传图像的反斜杠路径,但这不起作用,因为我需要将其转换为URL。 这是我得到的输出: 但是,我想用正斜杠替换图像前的反斜杠。 我试过这个: 但是,它只是去掉了反斜杠: 附:我知道这个网站上有这样的问题,但他们没有帮助我。例如,multer:文件的路径是不对的对我没有帮助,所以请不要将此标记为重复问题。多谢了。

  • 我有以下路径:,我想将其转换为: 我试图将上面的路径附加到这个路径:with但是当我将两个字符串附加在一起时,这是输出: 下面是有问题的代码: 由于斜杠的原因,附加的路径未被视为文件夹。有什么帮助吗? 编辑:只是澄清一下,完整路径(两个附加字符串)实际上是一个文件夹。

  • 问题内容: 我需要在路径字符串中替换为,但是以下代码失败。 有什么有用的建议吗? 问题答案: 使用函数filepath.ToSlash将操作系统路径分隔符替换为路径中的“ /”。 在Windows上,函数返回。在其他操作系统上,该函数按原样返回path参数。

  • 我需要将python3中的替换为复杂字符串中的。我知道这个问题已经被问了好几次,但大多数时候都是针对简单字符串,所以没有一个(接受的)答案真正适用于复杂字符串。 这也不同于使用无法解决此问题。请参见下文。 假设字符串是: 直截了当的方法是: 这导致: 语法错误:扫描字符串文字时EOL 这个答案建议使用: 这导致: 所以,没有变化。 这个答案表明: 但是对于如此复杂的字符串,这并不适用: unico