Android 科尔多瓦+;JqueryMobile:Ajax在以下情况下失败
(在过去的6个小时里一直在做) 我正在尝试制作phonegap/Cordova应用程序。 我无法通过Android emulator(API ver 22,Android>4.4)进行Ajax调用。Ajax调用可以在Firefox桌面上运行,但即使在chrome浏览器上也会失败(与emulator上的情况相同) 科尔多瓦版本 5.0.0 代码: 我看到的错误是: 在chrome远程调试器上: 拒绝连接到“”,因为 它违反了以下内容安全策略指令: “默认src‘自我’数据:间隙:‘不安全评估’”。 请注意,“connect src”未显式设置,因此“default src”为 用作退路 我在博客和帖子上看到了各种各样的设置,但都没有用。把一些放在这里以清除通常的嫌疑犯Android 科尔多瓦+;JqueryMobile:Ajax在以下情况下失败,android,cordova,google-chrome,jquery-mobile,phonegap-plugins,Android,Cordova,Google Chrome,Jquery Mobile,Phonegap Plugins,(在过去的6个小时里一直在做) 我正在尝试制作phonegap/Cordova应用程序。 我无法通过Android emulator(API ver 22,Android>4.4)进行Ajax调用。Ajax调用可以在Firefox桌面上运行,但即使在chrome浏览器上也会失败(与emulator上的情况相同) 科尔多瓦版本 5.0.0 代码: 我看到的错误是: 在chrome远程调试器上: 拒绝连接到“”,因为 它违反了以下内容安全策略指令: “默认src‘自我’数据:间隙:‘不安全评估’”。
$.support.cors = true;
$.mobile.allowCrossDomainPages = true;
AppManifest具有Internet访问权限:
<uses-permission android:name="android.permission.INTERNET" />
Config.xml:
<access origin="*" /> (have tried all variation, with putting actual server name here like "http://10.0.2.2" ).
(已尝试了所有变体,将实际服务器名称放在此处,如“http://10.0.2.2" ).
我的坏
我使用的是Phonegap示例html模板..它有以下阻止XSS的元标记
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
我不确定将这些东西放在示例代码中是否正确。对我来说,这浪费了我2天的时间。您可以检查以下内容:
内容安全策略有多种配置。出于安全原因,您应该保留内容安全策略: 一个关键的安全机制是同源策略。这限制了源a的文档或脚本如何与源B的资源交互。这意味着URL可以访问以下URL:
- ->不同的协议
- ->不同的端口
- ->不同的主机
tl;博士 示例代码中已经包含了这一点,这实际上很好。但也许这会很好。您确实应该保留此配置以提高安全性 在您的情况下,您必须将配置更改为:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *; connect-src 'self' http://10.0.2.2">
connect src限制您可以连接的来源(通过XHR、WebSocket和EventSource)。您必须在此处输入“self”(用于设备上的脚本)和远程URL(例如)
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
或
您可以对该行进行注释,但请记住,这是一项可以满足您自己应用程序需求的政策,实际上您可以看到一个链接以获取更多指导:
一些注意事项:
* 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 inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
* Enable inline JS: add 'unsafe-inline' to default-src
公正的地方
<meta http-equiv="Content-Security-Policy" content="script-src * data: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; media-src *">
它帮了我你到底把它改成了什么?
vi YourProject/plattforms/ios/www/index.html
vi YourProject/plattforms/android/www/index.html
* 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 inline scripts in order to mitigate risk of XSS vulnerabilities. To change this:
* Enable inline JS: add 'unsafe-inline' to default-src
<meta http-equiv="Content-Security-Policy" content="script-src * data: https://ssl.gstatic.com 'unsafe-inline' 'unsafe-eval'; media-src *">