I want my users to go to a protected directory on my domain. Both .htaccess and .htpasswd are created and reside in the protected library.
The html that asks for a username/password combination is:
<form method="post" enctype="multipart/form-data" action="bin/logintest.cgi">
Username: <input type="text" name="username" size="20" value="please enter.."><br>
Password: <input type="password" name="password" size="20"><BR>
<input name="submit" type="submit" value="login">
The python cgi script is:
#!/usr/bin/python
import urllib2
import base64
import cgi
form = cgi.FieldStorage()
username = form.getfirst("username")
password = form.getfirst("password")
request = urllib2.Request("http://www.mydomain.com/protecteddir/index.html")
base64string = base64.encodestring('%s:%s' % (username, password)).replace('\n', '')
request.add_header("Authorization", "Basic %s" % base64string)
result = urllib2.urlopen(request)
print "Content-type: text/html\n\n"
print result
When I enter a correct username/password combination, the resulting 'webpage' is:
>
I suspect that my python code "print result" is not correct. How can I fix this?
The returned object from a urlopen
call is much like an open file stream, you need to read
it to get the output.
Change print result
to print result.read()
:
result = urllib2.urlopen(request)
print "Content-type: text/html\n\n"
print result.read()
Or, change result = urllib2.urlopen(request)
to result = urllib2.urlopen(request).read()
:
result = urllib2.urlopen(request).read()
print "Content-type: text/html\n\n"
print result
Check out these examples: http://docs.python.org/library/urllib2.html#examples
lunchbox
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With