ClientCookie problem - Difference between 'post' on the local network and the internet

Fuzzyman fuzzyman at gmail.com
Fri Oct 22 18:02:02 EDT 2004


On Fri, 22 Oct 2004 13:39:05 +0200, Max M <maxm at mxm.dk> wrote:

>I am using ClientCookie for login on to servers and browsing them as 
>authenticated users.
>
>I kept getting "HTTP Error 400: Bad Request" errors when submitting my 
>forms. So I boiled it down to a simple example.
>
>When I try to use ClientCookie.urlopen() on my private network with ip 
>numbers like "http://localhost:8081/test_site/logged_in", it works fine.
>
>If I try to call the same site through the Internet, with a url like: 
>http://www.mxm.dk/test_site/logged_in I get the 400 message. But only 
>when using "post". 'get' works fine :-s
>

Are you using Version 1.0.0a ?
There is a bug (well actually a bug in urllib2 - but it amoutns to the
same thing) that is fixed in CVS. Either use CVS or go back to 0.4
whatever which is the latest stable version.

Regards,

Fuzzy

>On the Internet I go out through a gateway, so my external IP is 
>different than my internal.
>
>I assume that it causes an url mismatch somewhere. With my local ip 
>being set in some header by urlopener, and the server expecting the 
>remote ip.
>
>But I have no idea as to how I can avoid it? Any takers?
>
>
>#########################################
>
>import ClientCookie, urllib
>
>req = ClientCookie.Request
>urlopen = ClientCookie.urlopen
>
>def login(came_from, login_form):
>     data = {
>         'came_from' : came_from,
>         '__ac_name' : name,
>         '__ac_password' : password,
>         '__ac_persistent' : '1',
>         'submit' : 'Log ind',
>     }
>     encoded_data = urllib.urlencode(data)
>
>     request = req(login_form, encoded_data)
>     response = urlopen(request)
>     content = response.read()
>     return content
>
># This works
>came_from = 'http://localhost:8081/test_site/request_tester'
>login_form = "http://localhost:8081/test_site/logged_in"
>print login(came_from, login_form)
>
># This results in "HTTP Error 400: Bad Request"
>came_from = 'http://www.mxm.dk/test_site/request_tester'
>login_form = "http://www.mxm.dk/test_site/logged_in"
>print login(came_from, login_form)
>
>
>
>############################################
># traceback from the last call to login()
>
>Traceback (most recent call last):
>   File "E:\zopes\test_site\PRODUCTS\MXMPRO~1\z.py", line 35, in ?
>     print login(came_from, login_form)
>   File "E:\zopes\test_site\PRODUCTS\MXMPRO~1\z.py", line 22, in login
>     response = urlopen(request)
>   File 
>"G:\uninstalled\Python\ClientCookie-1.0.0a\ClientCookie\_urllib2_support.py", 
>line 715, in urlopen
>     return _opener.open(url, data)
>   File 
>"G:\uninstalled\Python\ClientCookie-1.0.0a\ClientCookie\_Opener.py", 
>line 125, in open
>     response = meth(req, response)
>   File 
>"G:\uninstalled\Python\ClientCookie-1.0.0a\ClientCookie\_urllib2_support.py", 
>line 387, in http_response
>     response = self.parent.error(
>   File 
>"G:\uninstalled\Python\ClientCookie-1.0.0a\ClientCookie\_Opener.py", 
>line 189, in error
>     return apply(self._call_chain, args)
>   File "C:\pytyons\Python23\lib\urllib2.py", line 306, in _call_chain
>     result = func(*args)
>   File "C:\pytyons\Python23\lib\urllib2.py", line 412, in 
>http_error_default
>     raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
>urllib2.HTTPError: HTTP Error 400: Bad Request




More information about the Python-list mailing list