0
 Here is my code:

    class MainHandler(tornado.web.RequestHandler):         
        def get(self):
            self.write(self.response.arguments)
    def main():
        settings = {"template_path": "html","static_path": "static","debug":True}
        tornado.options.parse_command_line()
        application = tornado.web.Application([ (r"/", MainHandler)],**settings)
        http_server = tornado.httpserver.HTTPServer(application)
        http_server.listen(options.port)
        tornado.ioloop.IOLoop.instance().start()
    if __name__ == "__main__":
        main()
so wget http://localhost/?#access_token=DWE232
I got nothing.
if wget http://localhost/?access_tokent=DWE232   and I can get the value 
How to solve the problem?
4

2 回答 2

1

您可以使用 urllib 对查询参数进行编码

>>> import urllib
>>> urllib.urlencode({'#access_token': 'DWE232'})
'%23access_token=DWE232'

   So instead of 

   wget http://localhost/?#access_token=DWE232 

   use

   wget http://localhost:12123/?%23access_token=DWE232
于 2013-07-01T15:24:40.573 回答
0

'#' 是片段标识符,不会在 URL 中传递。

来自 - http://en.wikipedia.org/wiki/Fragment_identifier

片段标识符的功能与 URI 的其余部分不同:即,它的处理完全是客户端,没有 Web 服务器的参与。当代理(例如 Web 浏览器)从 Web 服务器请求 Web 资源时,代理将 URI 发送到服务器,但不发送片段。相反,代理等待服务器发送资源,然后代理根据文档类型和分片值处理资源。

因此,如果您的代码需要将“#”传递给服务器,则需要使用 urlencode() 函数(python、JavaScript 等)对其进行编码,以确保安全传递。

于 2013-07-02T13:19:28.493 回答