upd.you перепишите свой вопрос?
cgi prints http response to stdout. Прежде всего вам нужно получить заголовки ... если заголовок «Авторизация» присутствует, вы можете декодировать логин и пароль от него. , если такой заголовок или паспорт недействительны, вы должны: отправить 401 ответ отправить заголовок «WWW-Authenticate», который содержит «Основная область = \» Message \ "'для базовой авторизации. также возможно дайджест, Ntlm и т. д.
Если браузер получает ответ 401, он запрашивает у пользователя пароль (даже если ajax), кодирует логин и пароль методом, запрошенным сервером, снова отправляет запрос с заголовком «Авторизация».
не образец CGI-код, декоратора для HTTPServer, BaseHTTPRequestHandler
def login_required(f):
def authenticate(self,*args,**kwargs):
if conf.get('noauth'):
return f(self,*args,**kwargs)
if self.headers.getheader('Authorization') :
cred = base64.b64decode(self.headers.getheader('Authorization').split(' ')[1])
users = conf.get('users', [])
if cred in users:
self.creds = cred
return f(self,*args,**kwargs)
#else
self.send_response(401)
self.send_header('WWW-Authenticate', 'Basic realm=\"Meter\"')
self.send_header('Content-type', 'text/html')
self.end_headers()
self.wfile.write('Not authenticated.')
return False
return authenticate
Извините, но я не понимаю. –