gpt4 book ai didi

web2py - 在 web2py 请求参数中允许 %20

转载 作者:行者123 更新时间:2023-12-01 04:09:21 26 4
gpt4 key购买 nike

我正在尝试获取在 URL 中传递编码字符串的请求。例如:

/application/controller/function/hello%20world

这样在我的函数中我就可以访问 request.args 并获得一个我可以取消引用()的字符串。

我尝试修改 rewrite.py 以不转换 %20 但这导致了一些错误。其他东西在我无法找到的地方捕获这些请求。我注意到 httpserver.log 文件有:
127.0.0.1, 2011-09-02 00:12:09, GET, /application/controller/function/hello world, HTTP/1.1, 200, 0.169954

空间已经转换。也许这给出了一个提示。网址在哪里未编码?

以下是我的路由文件的内容:
#!/usr/bin/python
# -*- coding: utf-8 -*-

default_application = 'chips'
default_controller = 'default'
default_function = 'index'


routes_onerror = [
(r'*/404', r'/chips/static/404.html')
,(r'*/*', r'/chips/static/error.html')
]

最佳答案

默认情况下,web2py 不允许在 args 中使用特殊字符,除了 '@'、'-'、'=' 和 '.'。要覆盖该行为,您可以将以下内容添加到 routes.py:

routes_apps_raw=['chips']

在这种情况下, request.args 将被设置为 None ,而您可以通过 request.raw_args 从 URL 访问原始参数。 .但请注意, routes_apps_raw如果您使用的是 parameter-based rewrite system,则不起作用(即,如果您的 routes.py 文件包含 routers 字典)。

请注意,即使进行了上述更改,web2py 中包含的 Rocket Web 服务器仍然会自动 unquote() URL,因此您将获得 request.raw_args 中的特殊字符,但它们已经被解码了。

如果您改用基于参数的重写系统,您可以通过 args_match 控制 URL 参数中允许使用哪些字符。键,它接受一个正则表达式作为它的值。默认正则表达式为 r'([\w@ -]|(?<=[\w@ -])[.=])*$' , 允许使用“@”、“-”、“=”和“.” (对 '=' 和 '.' 有一些限制)。

关于web2py - 在 web2py 请求参数中允许 %20,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7279198/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com