Fix Issue8280 - urllib2's Request method will remove fragements in the url.
This is how it should work,wget and curl work like this way too. Old behavior was wrong.
This commit is contained in:
parent
ad537f23e2
commit
d95cc75483
|
@ -1249,6 +1249,16 @@ class RequestTests(unittest.TestCase):
|
|||
self.assertEqual("www.python.org", self.get.get_origin_req_host())
|
||||
self.assertEqual("www.perl.org", self.get.get_host())
|
||||
|
||||
def test_wrapped_url(self):
|
||||
req = Request("<URL:http://www.python.org>")
|
||||
self.assertEqual("www.python.org", req.get_host())
|
||||
|
||||
def test_urlwith_fragment(self):
|
||||
req = Request("http://www.python.org/?qs=query#fragment=true")
|
||||
self.assertEqual("/?qs=query", req.get_selector())
|
||||
req = Request("http://www.python.org/#fun=true")
|
||||
self.assertEqual("/", req.get_selector())
|
||||
|
||||
|
||||
def test_main(verbose=None):
|
||||
from test import test_urllib2
|
||||
|
|
|
@ -149,6 +149,13 @@ class OtherNetworkTests(unittest.TestCase):
|
|||
|
||||
## self._test_urls(urls, self._extra_handlers()+[bauth, dauth])
|
||||
|
||||
def test_urlwithfrag(self):
|
||||
urlwith_frag = "http://docs.python.org/glossary.html#glossary"
|
||||
req = urllib.request.Request(urlwith_frag)
|
||||
res = urllib.request.urlopen(req)
|
||||
self.assertEqual(res.geturl(),
|
||||
"http://docs.python.org/glossary.html")
|
||||
|
||||
def _test_urls(self, urls, handlers, retry=True):
|
||||
import time
|
||||
import logging
|
||||
|
|
|
@ -99,7 +99,7 @@ from urllib.error import URLError, HTTPError, ContentTooShortError
|
|||
from urllib.parse import (
|
||||
urlparse, urlsplit, urljoin, unwrap, quote, unquote,
|
||||
splittype, splithost, splitport, splituser, splitpasswd,
|
||||
splitattr, splitquery, splitvalue, to_bytes, urlunparse)
|
||||
splitattr, splitquery, splitvalue, splittag, to_bytes, urlunparse)
|
||||
from urllib.response import addinfourl, addclosehook
|
||||
|
||||
# check for SSL
|
||||
|
@ -163,6 +163,7 @@ class Request:
|
|||
origin_req_host=None, unverifiable=False):
|
||||
# unwrap('<URL:type://host/path>') --> 'type://host/path'
|
||||
self.full_url = unwrap(url)
|
||||
self.full_url, fragment = splittag(self.full_url)
|
||||
self.data = data
|
||||
self.headers = {}
|
||||
self._tunnel_host = None
|
||||
|
|
Loading…
Reference in New Issue