5

के अंदर उपयोग किए जाने पर एपीआई सत्र कुकीज नहीं भेज रहा है। मैं क्रोम एक्सटेंशन बनाने की कोशिश कर रहा हूं जो Fetch API का उपयोग करके गिथब पर पुल अनुरोधों से कुछ विवरण स्क्रैप करता है, और फिर उन्हें कहीं और प्रदर्शित करता है। जब मैं गीथूब पर गैर-सार्वजनिक भंडार के साथ इसका उपयोग करने की कोशिश करता हूं तो मैं कुछ समस्याओं में भाग रहा हूं। मेरा मानना ​​है कि यह सीएसआरएफ सुरक्षा से संबंधित है, और नियम जो क्रोम एक्सटेंशन को सत्र कुकीज़ तक पहुंचते हैं।क्रोम एक्सटेंशन

मैं में निम्न होना मेरे एक्सटेंशन की manifest.json:

fetch('/redacted/redacted/pull/4549', {credentials: 'same-origin'}).then((response) => { 
    return response.text(); 
}).then((text) => { 
    // do cool stuff 
}) 

यह Github से 404 प्रतिक्रिया पैदा करता है:

"content_scripts": [{ 
    "matches": [ 
     "*://github.com/*/*/pulls" 
    ], 
    "js": ["script/underscore-1.8.3.min.js", "script/content.js"] 
}], 
"permissions": [ 
    "tabs", 
    "activeTab", 
    "*://github.com/*", 
    "webNavigation" 
] 

लेकिन जब मैं अपने script/content.js के अंतर्गत निम्नलिखित चलाते हैं। क्रोम इंस्पेक्टर के नेटवर्क टैब के साथ इस अनुरोध का निरीक्षण करते हुए, मैं देख सकता हूं कि यह अनुरोध के साथ मेरा गिटहब सत्र शीर्षलेख नहीं भेज रहा है।

यदि मैं इंस्पेक्टर में जावास्क्रिप्ट प्रॉम्प्ट का उपयोग करके एक ही अनुरोध करता हूं, तो मैं 200 प्रतिक्रिया देख सकता हूं, और मैं देख सकता हूं कि मेरी सत्र कुकीज़ भेज रहा है।

मेरी समझ यह थी कि मेरे manifest.json में गीथब डोमेन निर्दिष्ट करने का अर्थ यह होगा कि मेरे एक्सटेंशन को मेरी सामग्री स्क्रिप्ट में मेरे सत्र डेटा तक पहुंच होगी, क्या यह सही नहीं है? इस संरक्षित सामग्री के लिए वैध अनुरोध करने के लिए मुझे क्या करना चाहिए?

+0

मेरे पास यह समस्या भी है, केवल 'प्रमाण-पत्र' के साथ कुकीज़ भी न भेजें, जबकि एक्सएचआर बस सब कुछ भेजता है, मुझे एक बग जैसा लगता है। – Daiwei

उत्तर

4

Chrome blog के अनुसार, कुकीज़ को शामिल करने के लिए आपको के बजाय credentials: 'include' की आवश्यकता है।

+1

'क्रेडेंशियल्स का उपयोग करते समय:' शामिल 'वास्तव में सही समाधान है, ब्लॉग पोस्ट जो आप उद्धृत करते हैं, वह आपको वापस नहीं देता है; यह * क्रोम एक्सटेंशन या 'क्रेडेंशियल्स' का भी उल्लेख नहीं करता है: 'समान-मूल' (जो * 'fetch() 'कॉल के' init' पैरामीटर में मान्य विकल्प है, लेकिन बस इसमें काम नहीं करेगा क्रोम एक्सटेंशन का संदर्भ)। वास्तविक कारण आपको 'क्रेडेंशियल्स:' शामिल 'की आवश्यकता है, यह है कि क्रोम एक्सटेंशन एक धारणात्मक विंडो में निष्पादित होता है जिसका यूआरएल' क्रोम-एक्सटेंशन: // 'योजना पर है, और इसलिए निश्चित रूप से * उसी मूल * पर कोई वास्तविक डोमेन नहीं है आप एक fetch अनुरोध करना चाहते हो सकता है। –

-1

अनुमतियों में गिथब निर्दिष्ट करना केवल मेजबान तक पहुंच प्रदान करता है, अगर मैलवेयर (source) द्वारा एक्सटेंशन/ऐप से समझौता किया गया है तो क्षति को सीमित करने के लिए वहां।

यह content script documentation में इंगित नहीं किया गया है कि सत्र डेटा सामग्री स्क्रिप्ट में, केवल उनके डीओएम में पुनर्प्राप्त किया जा सकता है। मुझे लगता है कि यदि आप क्रोम एक्सटेंशन प्रोजेक्ट में बना रहे हैं तो आधिकारिक गिथब एपीआई का उपयोग और उसे शामिल करना बेहतर होगा।