हैंडलिंग मैं फोनगैप (उर्फ कॉर्डोवा) का उपयोग करके एक आईओएस एप्लिकेशन लिख रहा हूं, मेरे पास एक साधारण HTML लॉगिन पृष्ठ है जो उपयोगकर्ता को SSLHttpRequest का उपयोग SSL पर मूल प्रमाणीकरण के साथ लॉग इन करता है। जब आप अपना उपयोगकर्ता नाम और पासवर्ड सही ढंग से दर्ज करते हैं तो सब कुछ शानदार काम करता है। हालांकि, अगर आप गलत उपयोगकर्ता नाम/पासवर्ड दर्ज करते हैं तो मेरे किसी भी कॉलबैक को कभी भी बुलाया नहीं जाता है।आईओएस: XMLHttpRequest का उपयोग करके प्रमाणीकरण - 401 प्रतिकृति
यदि आप क्रोम पर एक ही कोड चलाते हैं, उदाहरण के लिए, गलत उपयोगकर्ता नाम/पासवर्ड के साथ, क्रोम एक समान तरीके से व्यवहार करता है, सिवाय इसके कि यह एक प्रमाणीकरण चुनौती संवाद पॉप अप करता है। क्रोम के संवाद पर रद्द करना मारना मेरे जावास्क्रिप्ट कोड पर नियंत्रण देता है। दुर्भाग्यवश, आईओएस पर, UIWebView भी एक ऑथ संवाद पॉप अप नहीं करेगा, यह बस लटकता है। मुझे उपयोगकर्ता को यह बताने का एक तरीका चाहिए कि उन्होंने गलत उपयोगकर्ता नाम या पासवर्ड दर्ज किया है ताकि वे पुनः प्रयास कर सकें।
मुझे यह जवाब मिल सकता है कि यह जवाब http://www.freelock.com/2008/06/technical-note-http-auth-with-ajax था लेकिन सर्वर से प्रतिक्रिया स्थिति बदलना सही काम जैसा प्रतीत नहीं होता है।
यहां मूल रूप से मेरा अनुरोध कोड कैसा दिखता है, लेकिन जब कोई खराब उपयोगकर्ता नाम या पासवर्ड भेजा जाता है तो यह कभी भी मेरे ऑनलोड कॉलबैक तक नहीं पहुंचता है (असल में पहले से ही बदले में कॉलबैक केवल एक बार बुलाया जाता है और तैयार चरण 1, उर्फ ओपन) के लिए होता है।
var req = new XMLHttpRequest();
req.onload = function(ev) {
if (req.status == 401) {
alert("Invalid Username/Password");
document.getElementById('password').focus();
} else if (req.status == 200) {
window.location.href = some_secure_site;
} else {
// edit //
alert("Some other status");
}
}
req.onerror = function (ev) { alert('Error'); };
req.ontimeout = function(ev) { alert('Timeout'); };
req.open('GET', uri, true, userValue, passValue);
req.withCredentials = true;
req.send();
उस समस्या से संबंधित होने लगता है: https://issues.apache.org/jira/browse/CB-2415 कृपया इसे जल्द ही ठीक करने के लिए वोट दें – martinoss