在 webapp2 的请求处理程序中使用 url 编码

working with url encoding in requesthandler in webapp2

这是我到目前为止尝试过的代码。

class MainPage(webapp2.RequestHandler):

    def get(self):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write('Hello, World!')

class Data(webapp2.RequestHandler):

    def get(self, url):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write(url)


app = webapp2.WSGIApplication([
    (r'/', MainPage),
    (r'/data/(.*$)', Data),
], debug=True)

如果我在 chrome 中打开此 url:

http://127.0.0.1:8080/data/https://www.google.co.in/?gfe_rd=cr&ei=JAYsWerYJ8b08weOpqqAAQ&gws_rd=ssl;

我明白了 https:/www.google.co.in/ 代替: https://www.google.co.in/?gfe_rd=cr&ei=JAYsWerYJ8b08weOpqqAAQ&gws_rd=ssl

我知道这一定很明显,但我找不到如何让它工作。

你能编码和解码 url 然后我会建议像 http://127.0.0.1:8080/data/https:%2F%2Fwww.google.co.in%2F%3Fgfe_rd=cr&ei=JAYsWerYJ8b08weOpqqAAQ&gws_rd=ssl 这样的东西,如果你这样编码它会打印完整的 url 。

import urllib

class Data(webapp2.RequestHandler):

    def get(self, url):
        self.response.headers['Content-Type'] = 'text/plain'
        self.response.write(urllib.unquote(url))

使用编码的 url 然后用 urrllib 取消引用似乎可以解决问题,如果可以的话。