मेरे वेब एप्लिकेशन में एक लॉगिन पृष्ठ है जो एक AJAX कॉल के माध्यम से प्रमाणीकरण प्रमाण-पत्र सबमिट करता है। उपयोगकर्ता सही यूज़रनेम और पासवर्ड दर्ज करता है, सब कुछ ठीक है, लेकिन यदि नहीं, निम्न होता है:मैं ब्राउज़र के प्रमाणीकरण संवाद को कैसे दबा सकता हूं?
- वेब सर्वर निर्धारित करता है कि हालांकि अनुरोध एक अच्छी तरह से गठित प्राधिकरण हैडर शामिल है, शीर्षक में साख करना सफलतापूर्वक प्रमाणित नहीं है।
- वेब सर्वर एक 401 स्थिति कोड देता है और इसमें एक या अधिक WWW- प्रमाणीकरण शीर्षलेख समर्थित प्रमाणीकरण प्रकार सूचीबद्ध करते हैं।
- ब्राउज़र पता लगाता है कि XMLHttpRequest ऑब्जेक्ट पर मेरी कॉल का जवाब एक 401 है और प्रतिक्रिया में WWW- प्रमाणीकरण शीर्षलेख शामिल हैं। इसके बाद उपयोगकर्ता नाम और पासवर्ड के लिए फिर से एक प्रमाणीकरण संवाद पॉप अप करता है।
यह चरण 3 तक ठीक है। मैं नहीं चाहता कि संवाद पॉप अप हो, मैं अपने AJAX कॉलबैक फ़ंक्शन में 401 प्रतिक्रिया को संभालना चाहता हूं। (उदाहरण के लिए, लॉगिन पेज पर एक त्रुटि संदेश प्रदर्शित करके।) मैं चाहता हूं कि उपयोगकर्ता अपना उपयोगकर्ता नाम और पासवर्ड दोबारा दर्ज कर ले, लेकिन मैं चाहता हूं कि वे मेरे दोस्ताना, आश्वस्त लॉगिन फॉर्म को देखें, ब्राउज़र की बदसूरत, डिफ़ॉल्ट नहीं प्रमाणीकरण संवाद।
संयोग से, मेरे पास सर्वर पर कोई नियंत्रण नहीं है, इसलिए इसे कस्टम स्थिति कोड (यानी, 401 के अलावा कुछ और) वापस करने का विकल्प नहीं है।
क्या कोई तरीका है कि मैं प्रमाणीकरण संवाद को दबा सकता हूं? विशेष रूप से, क्या मैं फ़ायरफ़ॉक्स 2 या बाद में प्रमाणीकरण आवश्यक संवाद को दबा सकता हूं? IE 6 और बाद में कनेक्ट को [होस्ट] संवाद से दबाने का कोई तरीका है?
संपादित
लेखक (18 सितम्बर) से अतिरिक्त जानकारी:
मैं जोड़ने चाहिए ब्राउज़र की प्रमाणीकरण संवाद को पॉपिंग के साथ वास्तविक समस्या यह है कि उपयोगकर्ता के लिए अपर्याप्त जानकारी दे रहा है कि ।
उपयोगकर्ता ने लॉगिन पेज पर फॉर्म के माध्यम से सिर्फ उपयोगकर्ता नाम और पासवर्ड दर्ज किया है, उनका मानना है कि उन्होंने उन्हें सही ढंग से टाइप किया है, और उन्होंने सबमिट बटन पर क्लिक किया है या एंटर दबाया है। उनकी उम्मीद यह है कि उन्हें अगले पृष्ठ पर ले जाया जाएगा या शायद कहा था कि उन्होंने अपनी जानकारी गलत तरीके से दर्ज की है और उन्हें फिर से प्रयास करना चाहिए। हालांकि, वह इसके बजाय एक अप्रत्याशित संवाद बॉक्स के साथ प्रस्तुत किया जाता है।
संवाद इस तथ्य की कोई स्वीकृति नहीं देता है कि वह उपयोगकर्ता नाम और पासवर्ड दर्ज करें। यह स्पष्ट रूप से यह नहीं बताता कि एक समस्या थी और उसे फिर से प्रयास करना चाहिए। इसके बजाए, संवाद बॉक्स उपयोगकर्ता को गुप्त जानकारी के साथ प्रस्तुत करता है जैसे "साइट कहता है: '[वास्तविक]'। जहां [दायरे] एक छोटा सा नाम है जो केवल एक प्रोग्रामर प्यार कर सकता है।
वेब ब्रोसर डिजाइनर नोट करते हैं: कोई भी पूछताछ नहीं करेगा कि प्रमाणीकरण संवाद को दबाने के लिए कैसे करें यदि संवाद स्वयं अधिक उपयोगकर्ता के अनुकूल था। संपूर्ण कारण है कि मैं लॉगिन फॉर्म कर रहा हूं यह है कि हमारी उत्पाद प्रबंधन टीम ब्राउज़र के प्रमाणीकरण संवाद को भयानक मानती है।
उत्तर यह है कि कोई अच्छा जवाब नहीं है। Marijn द्वारा सुझाए गए हैक जितना करीब हो उतना करीब है। बेशक, सर्वर और आपकी जावास्क्रिप्ट द्वारा समझा गया कस्टम प्रमाणीकरण का उपयोग करना, लेकिन ब्राउज़र द्वारा नहीं, यह संभव है, यदि यह संभव है तो चाल भी करेगा। – dgvid
मैं एक ही मुद्दे पर किया गया है और stackoverflow पर एक टिप्पणी यहाँ (नहीं मेरे ब्लॉग) में इस लिंक मिल गया: http://loudvchar.blogspot.ca/2010/11/avoiding-browser-popup-for-401.html आशा है इससे आपकी मदद होगी। – gies0r