HTTP базовая аутентификация с использованием Python - PullRequest
5 голосов
/ 30 ноября 2011

Я хочу, чтобы мои пользователи переходили в защищенный каталог на моем домене.И .htaccess, и .htpasswd созданы и находятся в защищенной библиотеке.

HTML-код, запрашивающий комбинацию имени пользователя и пароля:

<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">

PythonСценарий cgi:

#!/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

Когда я ввожу правильную комбинацию имени пользователя и пароля, получается «веб-страница»:

>

Я подозреваю, что мой код Python «результат печати»неправильно.Как я могу это исправить?

Ответы [ 2 ]

1 голос
/ 30 ноября 2011

Когда вы пишете:

resource = urllib2.urlopen(url)
# Here resource is your handle to the url
# resource provides a read function that mimics file read.

Итак, resource.read() # Читает URL как файл.

print resource # печатает repr для объекта ресурса, а нефактическое содержание.

1 голос
/ 30 ноября 2011

Возвращенный объект из urlopen вызова очень похож на поток открытых файлов, вам нужно read, чтобы получить вывод.

Измените print result на print result.read():

result = urllib2.urlopen(request)

print "Content-type: text/html\n\n"
print result.read()

Или измените result = urllib2.urlopen(request) на result = urllib2.urlopen(request).read():

result = urllib2.urlopen(request).read()

print "Content-type: text/html\n\n"
print result

Просмотрите следующие примеры: http://docs.python.org/library/urllib2.html#examples

Закуска

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...