का उपयोग कर मूल प्रमाणीकरण के साथ पायथन HTTP सर्वर के साथ अटक गया मैं काम करने के लिए एक अजगर आधारित वेबसर्वर प्राप्त करने की कोशिश कर रहा हूं।बेसएचटीटीपी
मैं मूल प्रमाणीकरण (401 शीर्षलेख भेजना) और उपयोगकर्ताओं की सूची के विरुद्ध प्रमाणीकरण करना चाहता हूं। मुझे "डब्ल्यूडब्ल्यूडब्लू-प्राधिकृत" हेडर के साथ 401 प्रतिक्रिया भेजने में कोई परेशानी नहीं है, मैं उपयोगकर्ताओं की प्रतिक्रिया (बेस 64 एन्कोडेड उपयोगकर्ता नाम & पासवर्ड) को मान्य कर सकता हूं, हालांकि, लॉगिन सत्यापन सफल सत्यापन के बाद पॉप-अप रहता है।
import SimpleHTTPServer
import SocketServer
from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
class Handler(BaseHTTPRequestHandler):
''' Main class to present webpages and authentication. '''
def do_HEAD(self):
print "send header"
self.send_response(401)
self.send_header('WWW-Authenticate', 'Basic realm=\"Test\"')
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
''' Present frontpage with user authentication. '''
self.do_HEAD()
if self.headers.getheader('Authorization') == None:
self.wfile.write('no auth header received')
pass
elif self.headers.getheader('Authorization') == 'Basic dGVzdDp0ZXN0':
self.wfile.write(self.headers.getheader('Authorization'))
self.wfile.write('authenticated!')
pass
else:
self.wfile.write(self.headers.getheader('Authorization'))
self.wfile.write('not authenticated')
pass
httpd = SocketServer.TCPServer(("", 10001), Handler)
httpd.serve_forever()
if __name__ == '__main__':
main()
पहले प्रस्तुत होने पर (http: // localhost: 10001) loginbox पॉप अप होता है, मैं में प्रवेश परीक्षण, परीक्षण (सही उपयोगकर्ता) उपयोगकर्ता ठीक मान्य है, लेकिन बॉक्स वापस पॉप अप होता है, अगर मैं रद्द करें क्लिक करें, मैं मान्य पृष्ठ पर जाता हूं ...
क्या कोई यहां हाथ उधार दे सकता है? मुझे संदेह है कि इस तथ्य के साथ कुछ करने के लिए कुछ है कि प्रमाणीकरण do_GET के अंतर्गत होता है, जो हर बार एक पेज लोड ट्रिगर होता है।
प्रतिभाशाली! अच्छा और सरल – Claudiu