के साथ प्रतिक्रिया शीर्षलेख पढ़ना "*://*/*"
के लिए अनुमतियों के साथ मैं Google क्रोम एक्सटेंशन में हूं और मैं XMLHttpRequest से Fetch API पर स्विच करने की कोशिश कर रहा हूं।Fetch API
एक्सटेंशन उपयोगकर्ता-इनपुट लॉगिन डेटा संग्रहीत करता है जो HTTP एथ के लिए सीधे XHR के खुले() कॉल में रखा जाता है, लेकिन Fetch के तहत अब पैरामीटर के रूप में उपयोग नहीं किया जा सकता है। HTTP मूल प्रमाणीकरण के लिए, इस सीमा को धोखा तुच्छ है, तो आप मैन्युअल रूप से एक प्राधिकरण हैडर सेट कर सकते हैं के रूप में:
fetch(url, {
headers: new Headers({ 'Authorization': 'Basic ' + btoa(login + ':' + pass) })
} });
HTTP Digest Auth तथापि अधिक अन्तरक्रियाशीलता की आवश्यकता है; आपको उन पैरामीटर को पढ़ने की आवश्यकता है जो सर्वर आपको वैध प्राधिकरण टोकन तैयार करने के लिए 401 प्रतिक्रिया के साथ भेजता है। मैं इस स्निपेट के साथ WWW-Authenticate
प्रतिक्रिया हेडर फ़ील्ड पढ़ने की कोशिश की है:
fetch(url).then(function(resp) {
resp.headers.forEach(function(val, key) { console.log(key + ' -> ' + val); });
}
लेकिन सभी मैं इस उत्पादन है:
content-type -> text/html; charset=iso-8859-1
कौन सा अपने आप में सही है, लेकिन है कि अभी भी लगभग 6 अधिक क्षेत्रों कमी है क्रोम के डेवलपर टूल्स के मुताबिक। अगर मैं resp.headers.get("WWW-Authenticate")
(या उस मामले के लिए किसी भी अन्य फ़ील्ड) का उपयोग करता हूं, तो मुझे केवल null
मिलता है।
Fetch API का उपयोग कर उन अन्य क्षेत्रों में जाने का कोई मौका?
@jules सीओआरएस के लिए यह प्रतिबंध 'एक्सेस-कंट्रोल-एक्सपोज़-हेडर 'या संभवतः' एक्सेस-कंट्रोल-स्वीट-हेडर 'में मानों का सम्मान करता है (हम इसे दोनों में डालते हैं)। – jacob
'एक्सेस-कंट्रोल-एक्सपोज़-हेडर' ने सर्वर से लौटे हेडर के लिए मेरे लिए काम किया - फिर हेडर फ़ेच प्रतिक्रिया हेडर ऑब्जेक्ट के माध्यम से उपलब्ध हैं। और सर्वर पर अनुरोध शीर्षलेखों को अनुमति देने के लिए 'एक्सेस-कंट्रोल-स्वीट-हेडर' का उपयोग किया गया था (या मुझे सर्वर से एक त्रुटि संदेश मिलेगा) – specimen
यह बेवकूफ है कि यह प्राप्त करने के साथ संभव नहीं है, लेकिन XmlHttpRequest के साथ किया जा सकता है। सुरक्षा लाभ क्या है यदि यह अभी भी कामकाज के साथ संभव है? – sebas