सीएसपी के बारे में मुझे क्या पता है, यह वाक्य रचनात्मक रूप से सही दिखता है। HTML5 Rocks article on CSP आपके वाक्यविन्यास से सहमत है, कह रहा है:
script-src https://host1.com https://host2.com
दोनों उत्पत्ति को मान्य के रूप में सही ढंग से निर्दिष्ट करेगा।
हालांकि, अपने समस्या हो सकती है, जिन्होंने:
यह सीएसपी disallows all subdomains, www.foo.com
और www.example.com
भी शामिल है। आप उन सबडोमेन होस्टनामों को स्पष्ट रूप से जोड़ सकते हैं, या आप सभी सबडोमेन को अनुमति देने के लिए https://*.foo.com
का उपयोग कर सकते हैं।
यदि आपकी कोई भी स्क्रिप्ट अनुरोध गैर-अनुमत डोमेन पर रीडायरेक्ट करता है, तो अनुरोध विफल हो जाएगा। उदाहरण के लिए, यदि https://example.com/foo.js
एक 301
या 302
रीडायरेक्ट के https://notpermitted.com/foo.js
(नहीं-अनुमति दी मूल) या https://www.example.com/foo.js
(जिनकी अनुमति नहीं उप डोमेन) के साथ प्रतिक्रिया करता है, अनुरोध according to the spec असफल हो जायेगी:
जब भी उपयोगकर्ता एजेंट यूआरआई को हासिल करेगा (रीडायरेक्ट) निम्नलिखित सहित ... अगर यूआरआई अनुमति स्क्रिप्ट स्रोतों से मेल नहीं खाता, उपयोगकर्ता एजेंट कार्य करना चाहिए जैसे कि वह एक खाली HTTP 400 प्रतिक्रिया प्राप्त किया था ...
संपादित करें:
बस पुष्टि करने के लिए, हाँ, क्रोम एक्सटेंशन एकाधिक HTTPS उत्पत्ति को श्वेतसूची में डाल सकते हैं। आप परीक्षण करने के लिए एक सरल विस्तार का निर्माण कर सकते इस:
manifest.json
{
"name":"CSP Test",
"version":"1.0",
"manifest_version":2,
"browser_action":{
"default_popup":"csp_test.html"
},
"content_security_policy": "script-src 'self' https://www.iana.org https://ajax.googleapis.com; object-src 'self'"
}
csp_test.html
<script src="https://www.iana.org/_js/2013.1/jquery.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script src="csp_test.js"></script>
csp_test.js
alert(jQuery)
alert(jQuery.ui)
यह एक्सटेंशन दूरस्थ डोमेन से jQuery और jQuery UI को लोड करता है।यदि आप सीएसपी से मूल को हटाते हैं, तो आपको एक "undefined
" चेतावनी दिखाई देगी जो संकेत देती है कि पुस्तकालयों में से एक लोड होने में विफल रहा है।
सामग्री स्क्रिप्ट एक्सटेंशन के सीएसपी से प्रभावित नहीं हैं, लेकिन पृष्ठ के द्वारा। –
मेरे उत्तर को बड़े पैमाने पर संपादित किया; कृपया सत्यापित करें कि मेरा उदाहरण एक्सटेंशन आपके लिए काम करता है, और आप मेरे उत्तर में मौजूद किसी भी गलतियों को नहीं कर रहे हैं। – apsillers
क्या आप वास्तव में 'example.com' तक पहुंचने की कोशिश कर रहे हैं? वास्तविक 'https: // example.com' में दो समस्याएं हैं: सबसे पहले, यह' https: // example.iana.org/'पर रीडायरेक्ट करता है, और दूसरा, यह प्रमाणपत्र का उपयोग करता है जो उसके डोमेन के लिए उपयुक्त नहीं है, जिससे क्रोम ब्लॉक हो जाता है यह। (जब आप यूआरएल में टाइप करते हैं तो आपको निश्चित रूप से एक चेतावनी स्क्रीन मिलती है। मुझे यकीन नहीं है कि यह स्क्रिप्ट संसाधन अनुरोधों को कैसे प्रबंधित करता है, लेकिन मुझे लगता है कि यह उन्हें अवरुद्ध करता है।) – apsillers