在 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 取消引用似乎可以解决问题,如果可以的话。
这是我到目前为止尝试过的代码。
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 取消引用似乎可以解决问题,如果可以的话。