[Python-checkins] python/dist/src/Lib urllib.py,1.157,1.158

gvanrossum@users.sourceforge.net gvanrossum@users.sourceforge.net
Thu, 15 May 2003 18:45:17 -0700


Update of /cvsroot/python/python/dist/src/Lib
In directory sc8-pr-cvs1:/tmp/cvs-serv8888

Modified Files:
	urllib.py 
Log Message:
More fixes according to SF 549151:

- When redirecting, always use GET.  This is common practice and
  more-or-less sanctioned by the HTTP standard.

- Add a handler for 307 redirection, which becomes an error for POST,
  but a regular redirect for GET and HEAD.


Index: urllib.py
===================================================================
RCS file: /cvsroot/python/python/dist/src/Lib/urllib.py,v
retrieving revision 1.157
retrieving revision 1.158
diff -C2 -d -r1.157 -r1.158
*** urllib.py	24 Apr 2003 15:32:08 -0000	1.157
--- urllib.py	16 May 2003 01:45:14 -0000	1.158
***************
*** 578,585 ****
          # In case the server sent a relative URL, join with original:
          newurl = basejoin(self.type + ":" + url, newurl)
!         if data is None:
!             return self.open(newurl)
!         else:
!             return self.open(newurl, data)
  
      def http_error_301(self, url, fp, errcode, errmsg, headers, data=None):
--- 578,582 ----
          # In case the server sent a relative URL, join with original:
          newurl = basejoin(self.type + ":" + url, newurl)
!         return self.open(newurl)
  
      def http_error_301(self, url, fp, errcode, errmsg, headers, data=None):
***************
*** 590,593 ****
--- 587,597 ----
          """Error 303 -- also relocated (essentially identical to 302)."""
          return self.http_error_302(url, fp, errcode, errmsg, headers, data)
+ 
+     def http_error_307(self, url, fp, errcode, errmsg, headers, data=None):
+         """Error 307 -- relocated, but turn POST into error."""
+         if data is None:
+             return self.http_error_302(url, fp, errcode, errmsg, headers, data)
+         else:
+             return self.http_error_default(url, fp, errcode, errmsg, headers)
  
      def http_error_401(self, url, fp, errcode, errmsg, headers, data=None):