"कोई सामग्री-सुरक्षा-नीति मेटा टैग नहीं मिला।" मेरे फोनगैप एप्लिकेशन में त्रुटि


94

अपने सिस्टम में कॉर्डोवा 5.0 को अपडेट करने के बाद, मैं नए एप्लिकेशन बनाता हूं। जब मैंने उस डिवाइस पर अपने एप्लिकेशन का परीक्षण किया, उस समय मुझे कंसोल लॉग में एक त्रुटि मिली:

No Content-Security-Policy meta tag found.
Please add one when using the Cordova-plugin-whitelist plugin.: 23.

मैं सिर अनुभाग में मेटा जोड़ता हूं

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src: 'self' 'unsafe-inline' 'unsafe-eval'>

लेकिन फिर से, मुझे वही त्रुटि मिली, जिस एप्लिकेशन में मैं इन-ऐप ब्राउज़र प्लगइन और 7 अन्य वेबसाइट लिंक का उपयोग करता हूं।


3
क्या आपने सही तरीके से cordova-plugin-whitelist- github.com/apache/cordova-plugin-whitelist प्लगइन स्थापित किया है ? उसके बाद, आपको <allow-navigation href="http://*/*" />अपने config.xml
Keval

1
धन्यवाद केवेल, ऐड के बाद <allow-नेविगेशन href = "http: // * / *" /> अब मेरा एप्लिकेशन ठीक काम करता है। फिर से धन्यवाद।


3
जब एक चरित्र कोड में गुम होने पर त्रुटि पैदा की जा सकती है, तो SO ऐसे संपादन की अनुमति क्यों नहीं देता है जो छह वर्णों से कम हैं? इसे ठीक करना बहुत आसान था, बस भविष्य में कुछ सेकंड के लिए किसी और को बचाने की कोशिश कर रहा था। मेटा टैग की सामग्री विशेषता के अंत में एक डबल उद्धरण गायब है।
जेसन डी।

जवाबों:


86

यदि आप इसे विशिष्ट रखना चाहते हैं, तो सभी वेब-पेज लिंक या विशिष्ट लिंक का उपयोग करने की अनुमति देने के लिए कॉर्डोवा-प्लगइन-वाइटेलिस्ट जोड़ने के बाद , आपको अपना आवेदन बताना होगा।

आप बस इसे अपने config.xml में जोड़ सकते हैं , जो आपके एप्लिकेशन के रूट डायरेक्टरी में पाया जा सकता है:

प्रलेखन में अनुशंसित :

<allow-navigation href="http://example.com/*" />

या:

<allow-navigation href="http://*/*" />

प्लगइन के दस्तावेज से:

नेविगेशन श्वेतसूची

नियंत्रण जो WebView URL को ही नेविगेट कर सकते हैं। केवल शीर्ष स्तर के नौवहन पर लागू होता है।

Quirks: Android पर यह गैर-http (s) योजनाओं के लिए iframes पर भी लागू होता है।

डिफ़ॉल्ट रूप से, केवल फ़ाइल: // URL पर नेविगेट करने की अनुमति है। अन्य URL की अनुमति देने के लिए, आपको अपने config.xml में टैग जोड़ना होगा:

<!-- Allow links to example.com -->
<allow-navigation href="http://example.com/*" />

<!-- Wildcards are allowed for the protocol, as a prefix
     to the host, or as a suffix to the path -->
<allow-navigation href="*://*.example.com/*" />

<!-- A wildcard can be used to whitelist the entire network,
     over HTTP and HTTPS.
     *NOT RECOMMENDED* -->
<allow-navigation href="*" />

<!-- The above is equivalent to these three declarations -->
<allow-navigation href="http://*/*" />
<allow-navigation href="https://*/*" />
<allow-navigation href="data:*" />


38

आपको अपने ऐप के हेड सेक्शन में CSP मेटा टैग जोड़ना होगा index.html

Https://github.com/apache/cordova-plugin-whitelist#content-security-ompy के अनुसार

सामग्री सुरक्षा नीति

नियंत्रण जो नेटवर्क अनुरोध (चित्र, XHRs, आदि) को अनुमति दी जाती है (सीधे वेबव्यू के माध्यम से)।

एंड्रॉइड और आईओएस पर, नेटवर्क अनुरोध श्वेतसूची (ऊपर देखें) सभी प्रकार के अनुरोधों को फ़िल्टर करने में सक्षम नहीं है (उदाहरण के लिए <video>और वेबसॉकेट्स अवरुद्ध नहीं हैं)। इसलिए, श्वेतसूची के अतिरिक्त, आपको अपने सभी पृष्ठों पर सामग्री सुरक्षा नीति <meta> टैग का उपयोग करना चाहिए ।

एंड्रॉइड पर, सिस्टम वेबव्यू के भीतर सीएसपी के लिए समर्थन किटकैट से शुरू होता है (लेकिन क्रॉस्वाक वेब व्यू का उपयोग करके सभी संस्करणों पर उपलब्ध है)।

आपके .htmlपृष्ठों के लिए कुछ उदाहरण सीएसपी घोषणाएँ हैं :

<!-- Good default declaration:
    * gap: is required only on iOS (when using UIWebView) and is needed for JS->native communication
    * https://ssl.gstatic.com is required only on Android and is needed for TalkBack to function properly
    * Disables use of eval() and inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
        * Enable inline JS: add 'unsafe-inline' to default-src
        * Enable eval(): add 'unsafe-eval' to default-src
-->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com; style-src 'self' 'unsafe-inline'; media-src *">

<!-- Allow requests to foo.com -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' foo.com">

<!-- Enable all requests, inline styles, and eval() -->
<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'">

<!-- Allow XHRs via https only -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self' https:">

<!-- Allow iframe to https://cordova.apache.org/ -->
<meta http-equiv="Content-Security-Policy" content="default-src 'self'; frame-src 'self' https://cordova.apache.org">

जब मैं CSP डिक्लेरेशन जोड़ता हूं, तो Google मानचित्र के लिए निम्न कोड कोड इस तरह विफल हो जाता है। कोई उपाय ? var pos = new google.maps.LatLng (position.coords.latitude, position.coords.longitude); // लाइन 173 11-09 21: 17: 30.724: D / SystemWebChromeClient (25692): फ़ाइल: ///android_asset/www/index.html: लाइन 173: अनकवर्ड ReferenceError: google परिभाषित नहीं है
shamaleyte

1
मुझे पहचाने जाने के लिए /> के साथ मेटा टैग को बंद करने की आवश्यकता थी
metamagikum

23

आपके मेटा टैग में त्रुटियाँ हैं।

आपका अपना:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src: 'self' 'unsafe-inline' 'unsafe-eval'>

सही किया:

<meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"/>

"स्क्रिप्ट-src" के बाद कोलन पर ध्यान दें, और मेटा टैग का अंत डबल-कोट।


3
जब मैं <meta http-equiv="Content-Security-Policy" content="default-src *; style-src 'self' 'unsafe-inline'; script-src 'self' 'unsafe-inline' 'unsafe-eval'"/>आयनिक ढांचे के साथ लाइव रीलोड को शामिल करता हूं तो काम करना बंद कर देता है इसलिए वहां से सावधान रहें
CommonSenseCode

@codePlusPlus Ionic लिवरेलैड को फिर से सक्रिय http://localhost:35729करने के लिए, स्क्रिप्ट- स्क्रू निर्देश और ws://localhost:35729कनेक्ट-src निर्देश में जोड़ें।
कोल्ली

@kolli, क्या आप दिखा सकते हैं कि नए diretives कैसा दिखेगा? यह स्पष्ट नहीं है कि उन्हें निर्देशों में कैसे जोड़ा जाए।
jessewolfe

मुझे लगता है कि जानकारी मूल पोस्ट में है। लेकिन स्पष्ट करने के लिए: ध्यान दें कि 'जोड़कर', इसका मतलब है कि आप के script-src 'self' 'unsafe-inline' 'unsafe-eval'साथ प्रतिस्थापित कर सकते हैं script-src 'self' http://localhost:35279 'unsafe-inline' 'unsafe-eval'और आप सामग्री गुण के अंत में एक अलग अर्ध-बृहदान्त्र के साथ एक नया निर्देश ; script-src ws://localhost:35279
जोड़ेंगे

ऊपर से सुधार ... दूसरे भाग के लिए, यह होना चाहिए ; connect-src 'self' ws://localhost:35279। ध्यान दें कि मुझे एक त्रुटि मिल रही थी (CSP उल्लंघन के कारण फ़ाइल का उपयोग नहीं किया जा सकता है: // <path to index.html>) जब तक मैंने 'स्व' नहीं जोड़ा।
jessewolfe

2

मेरे लिए यह श्वेतसूची प्लगइन को पुनर्स्थापित करने के लिए पर्याप्त था :

cordova plugin remove cordova-plugin-whitelist

और फिर

cordova plugin add cordova-plugin-whitelist

ऐसा लगता है कि कॉर्डोबा के पिछले संस्करणों से अपडेट करना सफल नहीं था।


1

मेरे लिए समस्या यह थी कि मैं कॉर्डोवा एंड्रॉइड और आईओएस प्लेटफार्मों के अप्रचलित संस्करणों का उपयोग कर रहा था । इसलिए android@5.1.1 और ios@4.0.1 में अपग्रेड करके इसे हल किया।

आप इन विशिष्ट संस्करणों में अपग्रेड कर सकते हैं:

cordova platforms rm android
cordova platforms add android@5.1.1
cordova platforms rm ios
cordova platforms add ios@4.0.1

क्या आपका मतलब android 5.1.1 है ?
मिक्स 3 डी

मैंने @Maxim और पियरे-एलेक्सिस डे सोलमिनिहाक दोनों सलाह का पालन किया, और मेरे ऐप को आखिरकार ठीक काम मिला। धन्यवाद!
ज़लाकैन

0

कनेक्शन के बारे में एक और मुद्दा है। कुछ Android संस्करण कनेक्ट कर सकते हैं लेकिन कुछ नहीं कर सकते। तो एक और उपाय है

AndroidManifest.xml में:

<application ... android:usesCleartextTraffic="true">
        ...
    </application>

बस 'android: addCleartextTraffic = "true" का उपयोग करें

और समस्या आखिरकार हल हो गई।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.