मेरे वेब एप्लिकेशन में एक लॉगिन पृष्ठ है जो एक AJAX कॉल के माध्यम से प्रमाणीकरण क्रेडेंशियल्स को प्रस्तुत करता है। यदि उपयोगकर्ता सही उपयोगकर्ता नाम और पासवर्ड दर्ज करता है, तो सब कुछ ठीक है, लेकिन यदि नहीं, तो निम्न होता है:
- वेब सर्वर यह निर्धारित करता है कि हालांकि अनुरोध में एक अच्छी तरह से गठित प्राधिकरण हेडर शामिल है, हेडर में क्रेडेंशियल्स सफलतापूर्वक प्रमाणित नहीं होते हैं।
- वेब सर्वर एक 401 स्थिति कोड लौटाता है और इसमें एक या एक से अधिक WWW-Authenticate हेडर समर्थित प्रमाणीकरण प्रकारों को सूचीबद्ध करता है।
- ब्राउज़र पता लगाता है कि XMLHttpRequest ऑब्जेक्ट पर मेरे कॉल की प्रतिक्रिया 401 है और प्रतिक्रिया में WWW-Authenticate हेडर शामिल हैं। यह उपयोगकर्ता नाम और पासवर्ड के लिए फिर से एक प्रमाणीकरण डायलॉग पॉप अप करता है।
चरण 3 तक यह सब ठीक है। मैं संवाद को पॉप अप नहीं करना चाहता, मैं अपने AJAX कॉलबैक फ़ंक्शन में 401 प्रतिक्रिया को संभालना चाहता हूं। (उदाहरण के लिए, लॉगिन पृष्ठ पर एक त्रुटि संदेश प्रदर्शित करके।) मैं चाहता हूं कि उपयोगकर्ता अपने उपयोगकर्ता नाम और पासवर्ड को फिर से दर्ज करें, लेकिन मैं चाहता हूं कि वे मेरे अनुकूल, आश्वस्त करने वाले लॉगिन फ़ॉर्म देखें, न कि ब्राउज़र का बदसूरत, डिफ़ॉल्ट। प्रमाणीकरण संवाद।
संयोग से, सर्वर पर मेरा कोई नियंत्रण नहीं है, इसलिए इसे कस्टम स्टेटस कोड (यानी, 401 के अलावा कुछ और) वापस करना एक विकल्प नहीं है।
क्या कोई तरीका है जिससे मैं प्रमाणीकरण संवाद को दबा सकता हूं? विशेष रूप से, क्या मैं फ़ायरफ़ॉक्स 2 या बाद के संस्करण में प्रमाणीकरण आवश्यक संवाद को दबा सकता हूं? IE 6 और बाद में कनेक्ट [होस्ट] संवाद को दबाने का कोई तरीका है ?
लेखक से अतिरिक्त जानकारी संपादित करें (18 सितंबर):
मुझे यह जोड़ना चाहिए कि ब्राउज़र के प्रमाणीकरण संवाद के साथ असली समस्या यह है कि यह उपयोगकर्ता को अपर्याप्त जानकारी देता है।
उपयोगकर्ता ने लॉगिन पृष्ठ पर फ़ॉर्म के माध्यम से केवल एक उपयोगकर्ता नाम और पासवर्ड दर्ज किया है, उनका मानना है कि उसने दोनों को सही ढंग से टाइप किया है, और उसने सबमिट बटन या हिट दर्ज पर क्लिक किया है। उसकी अपेक्षा यह है कि उसे अगले पृष्ठ पर ले जाया जाएगा या शायद यह बताया जाएगा कि उसने गलत तरीके से अपनी जानकारी दर्ज की है और उसे फिर से प्रयास करना चाहिए। हालांकि, वह इसके बजाय एक अप्रत्याशित संवाद बॉक्स के साथ प्रस्तुत किया गया है।
संवाद इस तथ्य को स्वीकार नहीं करता है कि उसने सिर्फ एक उपयोगकर्ता नाम और पासवर्ड दर्ज किया है । यह स्पष्ट रूप से नहीं बताता है कि कोई समस्या थी और उसे फिर से प्रयास करना चाहिए। इसके बजाय, संवाद बॉक्स उपयोगकर्ता को "साइट कहता है: ' [दायरे] ' जैसी गुप्त जानकारी के साथ प्रस्तुत करता है ।" जहां [क्षेत्र] एक छोटा क्षेत्र है, जिसे केवल एक प्रोग्रामर ही प्यार कर सकता है।
वेब ब्रॉसर डिज़ाइनर ध्यान देते हैं: कोई भी यह नहीं पूछेगा कि प्रमाणीकरण संवाद को कैसे दबाया जाए यदि संवाद केवल उपयोगकर्ता के अनुकूल था। पूरे कारण यह है कि मैं एक लॉगिन प्रपत्र कर रहा हूँ कि हमारे उत्पाद प्रबंधन टीम ठीक ही समझता है 'ब्राउज़रों प्रमाणीकरण संवाद भयंकर हो रहा है।