diff options
author | Michael Elkins <melkins@tislabs.com> | 2011-02-15 19:34:14 +0000 |
---|---|---|
committer | Michael Elkins <melkins@tislabs.com> | 2011-02-15 19:34:14 +0000 |
commit | 0b6b025debcd4a43cb1407c98936e17fc6b13e1d (patch) | |
tree | 0b841c0a0469c35f70a5ae54ad955c201a0dee28 | |
parent | 43b9e68b691428e366b2a781f71f2d104a9300ec (diff) |
Django's CSRF protection mechanism requires the HTTP Referer header to be set when POSTing via https.
svn path=/scripts/rpkidemo; revision=3679
-rwxr-xr-x | scripts/rpkidemo | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/scripts/rpkidemo b/scripts/rpkidemo index 654fdfdb..88684f60 100755 --- a/scripts/rpkidemo +++ b/scripts/rpkidemo @@ -254,18 +254,19 @@ class main(object): # Test login credentials resp = self.opener.open(self.auth_url) # GET - r = self.opener.open( - self.auth_url, + r = self.opener.open(urllib2.Request( + url = self.auth_url, data = urllib.urlencode({ "username" : self.username, "password" : self.password, - "csrfmiddlewaretoken" : self.csrftoken() })) # POST + "csrfmiddlewaretoken" : self.csrftoken() }), + headers = { "Referer" : self.auth_url, + "User-Agent" : self.user_agent})) # POST return except urllib2.URLError, e: print "Could not log in to server: %s" % e print "Please try again" - if e.code != 403: - save_error(e) + save_error(e) def csrftoken(self): # Django's login form requires the 'csrfmiddlewaretoken.' It turns out @@ -337,7 +338,8 @@ class main(object): "csrfmiddlewaretoken" : self.csrftoken() }) # POST try: return self.opener.open(urllib2.Request(url, post_data, { - "User-Agent" : self.user_agent })) + "User-Agent" : self.user_agent, + "Referer" : url})) except urllib2.HTTPError, e: sys.stderr.write("Problem uploading to URL %s\n" % url) save_error(e) |