2014-06-14 16 views
6

कोई विचार क्यों XMLHttpRequestPebble JS Framework में सही प्रमाण-पत्र के साथ एंड्रॉइड पर मूल प्रमाणीकरण विफल रहता है लेकिन आईओएस में काम करता है?XMLHttpRequest मूल प्रमाणीकरण में विफल रहता है

वास्तव में एक ही कोड, की तर्ज पर:

var req = new XMLHttpRequest(); 
req.open(method, url, true, user, pass); 
req.send(data); 
req.onreadystatechange = function() { ... } 

401 में रिटर्न एंड्रॉयड कंकड़ app से, लेकिन आईओएस में सही ढंग से प्रमाणित करता है।

+0

क्या आपने इसे देखा है? http://stackoverflow.com/questions/11025213/ios- प्रमाणीकरण-using-xmlhttprequest-handling-401-reponse – JakeGould

+1

डाउनवॉटर एकजुट हो जाते हैं :) या कम से कम 'स्वयं को विभाजित करें। क्या यह "आपने किस कोशिश की है"? या "अपना प्रयास/कोड दिखाएं"? मैं खुशी से सुनूंगा। –

+0

@ जेक दुर्भाग्यवश यह मेरे लिए लागू नहीं होता है। कंकड़ ऐप का जेएस हिस्सा पहले ही आईओएस पर सही तरीके से काम करता है। और एंड्रॉइड कंकड़ जेएस ढांचे में हमेशा विफल रहता है - यहां तक ​​कि सही क्रेडेंशियल्स के साथ भी –

उत्तर

17

मुझे एक वर्कअराउंड मिला जो एंड्रॉइड पर मेरे लिए काम करता था।

क्यों, लेकिन प्रत्यक्ष प्रमाणीकृत अनुरोध पता नहीं है:

req.open(method, fullurl, true, user, pass); 
    req.send(data); 

मेरे लिए काम नहीं किया - यह हमेशा 401 लौटे तो इसके बजाय मैं शीर्षक के माध्यम से बुनियादी प्रमाणीकरण सेट करने की कोशिश की:

req.open(method, fullurl, true); 
    req.setRequestHeader("Authorization", "Basic " + Base64.encode(user + ":" + pass)); 
    req.send(data); 

(जहां बेस 64 यहां से लिया गया है: https://stackoverflow.com/a/246813/961695) - और यह काम किया! शायद एंड्रॉइड पर XmlHttpRequest कार्यान्वयन में एक बग है।

+1

Google समस्या: https://code.google.com/p/chromium/issues/detail?id=128323 – StarQuake

+4

बीटा का प्रयास क्यों नहीं करें? जावास्क्रिप्ट शुद्ध है .. ¬ एक € 'req.setRequestHeader (" प्रमाणीकरण "," बेसिक "+ btoa (उपयोगकर्ता +": "+ पास));' – KingRider

+0

btoa केवल ASCII है – diachedelic

संबंधित मुद्दे