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