GET参数中允许哪些字符而不编码或转义它们?我的意思是这样的:
http://www.example.org/page.php?name=XYZ
你有什么可以而不是XYZ?我认为只有以下字符:
这是完整列表还是允许其他字符?
我希望你能帮助我.提前致谢!
我有一个简单的裸 WSGI 应用程序:
def application(environ, start_response):
start_response('200 OK', [('Content-Type','text/html')])
print('PATH_INFO:', environ['PATH_INFO'])
return [b'<p>Hello World</p>']
if __name__ == '__main__':
from wsgiref import simple_server
server = simple_server.make_server('0.0.0.0', 8080, application)
server.serve_forever()
Run Code Online (Sandbox Code Playgroud)
我提出两个要求:
C:\>curl "http://localhost:8080/<foo>"
<p>Hello World</p>
C:\>curl "http://localhost:8080/%3Cfoo%3E"
<p>Hello World</p>
Run Code Online (Sandbox Code Playgroud)
我得到这个输出:
C:\code>python foo.py
PATH_INFO: /<foo>
127.0.0.1 - - [09/Mar/2014 13:48:39] "GET /<foo> HTTP/1.1" 200 18
PATH_INFO: /<foo>
127.0.0.1 - - [09/Mar/2014 13:48:47] "GET /%3Cfoo%3E HTTP/1.1" 200 18
Run Code Online (Sandbox Code Playgroud)
查看我的应用程序如何获取 URL 解码路径,/<foo>即使在客户端请求时也是如此/%3Cfoo%3E。
它表明 wsgiref.simple_server 确保我的应用程序始终获取environ['PATH_INFO'].
但我在 PEP-3333 中找不到记录此行为的任何地方。您能给我指出记录此行为的官方文档吗?