Skip to content

urllib2 passes fragment identifier to server #52527

Closed

Description

@methane
BPO 8280
Nosy @orsenthil, @merwok, @methane
Files
  • fragment.patch
  • Note: these values reflect the state of the issue at the time it was migrated and might not reflect the current state.

    Show more details

    GitHub fields:

    assignee = 'https://github.com/orsenthil'
    closed_at = <Date 2010-08-08.11:47:46.183>
    created_at = <Date 2010-04-01.16:08:31.765>
    labels = ['type-bug', 'library']
    title = 'urllib2 passes fragment identifier to server'
    updated_at = <Date 2010-08-08.11:47:46.182>
    user = 'https://github.com/methane'

    bugs.python.org fields:

    activity = <Date 2010-08-08.11:47:46.182>
    actor = 'orsenthil'
    assignee = 'orsenthil'
    closed = True
    closed_date = <Date 2010-08-08.11:47:46.183>
    closer = 'orsenthil'
    components = ['Library (Lib)']
    creation = <Date 2010-04-01.16:08:31.765>
    creator = 'methane'
    dependencies = []
    files = ['18358']
    hgrepos = []
    issue_num = 8280
    keywords = ['patch']
    message_count = 4.0
    messages = ['102103', '112712', '112721', '113250']
    nosy_count = 4.0
    nosy_names = ['orsenthil', 'dstanek', 'eric.araujo', 'methane']
    pr_nums = []
    priority = 'normal'
    resolution = 'fixed'
    stage = 'resolved'
    status = 'closed'
    superseder = None
    type = 'behavior'
    url = 'https://bugs.python.org/issue8280'
    versions = ['Python 2.6', 'Python 3.1', 'Python 2.7', 'Python 3.2']

    Activity

    1. methane commented on Apr 1, 2010

      @methane
      MemberAuthor
      >>> urllib2.urlopen("http://wave-robot-python-client.googlecode.com/svn/trunk/pydocs/index.html#module-wavelet")
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "C:\usr\Python2.6\lib\urllib2.py", line 126, in urlopen
          return _opener.open(url, data, timeout)
        File "C:\usr\Python2.6\lib\urllib2.py", line 398, in open
          response = meth(req, response)
        File "C:\usr\Python2.6\lib\urllib2.py", line 511, in http_response
          'http', request, response, code, msg, hdrs)
        File "C:\usr\Python2.6\lib\urllib2.py", line 436, in error
          return self._call_chain(*args)
        File "C:\usr\Python2.6\lib\urllib2.py", line 370, in _call_chain
          result = func(*args)
        File "C:\usr\Python2.6\lib\urllib2.py", line 519, in http_error_default
          raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
      urllib2.HTTPError: HTTP Error 400: Bad Request

      This happens when redirected URL contains fragment.

      >>> urllib2.urlopen("http://goo.gl/z1d5")
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
        File "C:\usr\Python2.6\lib\urllib2.py", line 126, in urlopen
          return _opener.open(url, data, timeout)
        File "C:\usr\Python2.6\lib\urllib2.py", line 398, in open
          response = meth(req, response)
        File "C:\usr\Python2.6\lib\urllib2.py", line 511, in http_response
          'http', request, response, code, msg, hdrs)
        File "C:\usr\Python2.6\lib\urllib2.py", line 430, in error
          result = self._call_chain(*args)
        File "C:\usr\Python2.6\lib\urllib2.py", line 370, in _call_chain
          result = func(*args)
        File "C:\usr\Python2.6\lib\urllib2.py", line 606, in http_error_302
          return self.parent.open(new, timeout=req.timeout)
        File "C:\usr\Python2.6\lib\urllib2.py", line 398, in open
          response = meth(req, response)
        File "C:\usr\Python2.6\lib\urllib2.py", line 511, in http_response
          'http', request, response, code, msg, hdrs)
        File "C:\usr\Python2.6\lib\urllib2.py", line 436, in error
          return self._call_chain(*args)
        File "C:\usr\Python2.6\lib\urllib2.py", line 370, in _call_chain
          result = func(*args)
        File "C:\usr\Python2.6\lib\urllib2.py", line 519, in http_error_default
          raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
      urllib2.HTTPError: HTTP Error 400: Bad Request

      urllib2.Request.get_selector() should be:

          def get_selector(self):
              return self.__r_host.split('#')[0]
    2. added
      stdlibStandard Library Python modules in the Lib/ directory
      type-bugAn unexpected behavior, bug, or error
      on Apr 1, 2010
    3. self-assigned this
      on Apr 6, 2010
    4. dstanek commented on Aug 3, 2010

      dstanekmannequin
      Mannequin

      Added a patch to fix this behavior.

    5. dstanek commented on Aug 3, 2010

      dstanekmannequin
      Mannequin

      I have also uploaded my patch to http://codereview.appspot.com/1918042 so easier viewing.

    6. orsenthil commented on Aug 8, 2010

      @orsenthil
      Member

      Fixed in revision 83818(py3k), 83819 (release31-maint) and 83820 (release27-maint).

      David, a couple of comments on your patch.

      • Request method was from urllib2, so the proper place of tests were test_urllib2. This already had Requests test so some additional tests were only required.
      • Also, now the fragments are removed and sent to the server, a proper response could be obtained, it can tested via 'network' tests in test_urllib2net.

      You might check the svn diffs to see the changes made.
      Thanks for the patch.

    7. transferred this issue fromon Apr 10, 2022
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Metadata

    Metadata

    Assignees

    Labels

    stdlibStandard Library Python modules in the Lib/ directorytype-bugAn unexpected behavior, bug, or error

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions