Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 科尔多瓦+;JqueryMobile:Ajax在以下情况下失败_Android_Cordova_Google Chrome_Jquery Mobile_Phonegap Plugins - Fatal编程技术网

Android 科尔多瓦+;JqueryMobile:Ajax在以下情况下失败

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‘自我’数据:间隙:‘不安全评估’”。

(在过去的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”为 用作退路

我在博客和帖子上看到了各种各样的设置,但都没有用。把一些放在这里以清除通常的嫌疑犯

$.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:

但不包括以下内容:

  • ->不同的协议
  • ->不同的端口
  • ->不同的主机
(更多关于:)

但是,攻击者可以使用

要防止XSS和数据注入攻击,您可以使用内容安全策略(从):

内容安全策略(CSP)是一个附加的安全层,有助于检测和减轻某些类型的攻击,包括跨站点脚本(XSS)和数据注入攻击。这些攻击被用于从数据盗窃到网站破坏或恶意软件传播的所有方面。 CSP设计为完全向后兼容;不支持它的浏览器仍然与实现它的服务器一起工作,反之亦然。不支持CSP的浏览器只是忽略它,像往常一样工作,默认为web内容的标准同源策略。如果站点不提供CSP头,浏览器同样使用标准的同源策略



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(例如)

  • @Harry Martel提供了一个关于如何配置内容安全策略的示例链接
  • 这也是一篇概述配置属性的文章 错误消息:

    拒绝连接到“”,因为它违反了以下内容安全策略指令:“默认src‘self’数据:gap:‘不安全评估’”。请注意,未显式设置“connect src”,因此使用“default src”作为回退

    Cordova 4/5/6“Cordova创建”命令

    正在使用此元标记生成项目

    <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 *">