Visual Studio 2015 Ajax 在 Apache Cordova Android 平台 6 中使用设备请求失败
Visual Studio 2015 Ajax Request fails using Device in Apache Cordova Android platform 6
Apache 团队,
我发布的这个问题,同时在 Vs 2015 的 TACO 中尝试有关 ajax 请求的所有可用资源失败。我将 API 与 localhost 一起使用,使用 localhost 的 IP 地址,尝试使用服务器托管 API,但当我将设备用于 Android 时,我总是得到状态 = 0。使用 Ripple Nexus 它可以工作 fine.I 我挣扎了一个星期但还没有运气。
我正在使用 VS 2015,Android 平台 6。
我也添加了白名单插件,并尝试添加所有类型的访问源:
<access origin="*" />
或
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
添加元标记:
<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 *">
Lollipop 对 Android 安全模型进行了一些更改。为了支持新模型,Cordova 5+ 引入了白名单插件和弃用的新安全模型 <access origin="*">
。您的应用程序具有所有正确的部分,但您没有正确配置它们。
- 白名单插件
- 内容安全策略(元标记) 声明可以在客户端代码中访问哪些资源
<allow-intent>
告诉 native/compiled 应用程序哪些来源可用于数据(例如 XHR)
<allow-navigation>
告诉 native/compiled 应用哪些来源可用于内容(例如整页导航)
请注意,CSP 和 <allow-intent/navigation>
标签必须匹配。 CSP 由 Web 视图中的客户端代码使用。 <allow-intent/navigation>
标签由 native/compiled 应用包装器使用。
要允许对应用程序本身之外的域进行数据访问,您需要修改内容安全策略 (CSP) 以识别外部权限。有一个很棒的教程 available here, but I've provided an example below. This CSP allows XHR requests and content to be loaded from https://thecatapi.com(一个愚蠢的 API 那 returns 猫图像):
在index.html...
<meta http-equiv="Content-Security-Policy" content="default-src 'self' content-src: https://thecatapi.com data: gap: https://ssl.gstatic.com https://thecatapi.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
在config.xml...
<allow-intent href="https://thecatapi.com/*" />
<allow-navigation href="https://thecatapi.com/* />
Apache 团队,
我发布的这个问题,同时在 Vs 2015 的 TACO 中尝试有关 ajax 请求的所有可用资源失败。我将 API 与 localhost 一起使用,使用 localhost 的 IP 地址,尝试使用服务器托管 API,但当我将设备用于 Android 时,我总是得到状态 = 0。使用 Ripple Nexus 它可以工作 fine.I 我挣扎了一个星期但还没有运气。
我正在使用 VS 2015,Android 平台 6。
我也添加了白名单插件,并尝试添加所有类型的访问源:
<access origin="*" />
或
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
添加元标记:
<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 *">
Lollipop 对 Android 安全模型进行了一些更改。为了支持新模型,Cordova 5+ 引入了白名单插件和弃用的新安全模型 <access origin="*">
。您的应用程序具有所有正确的部分,但您没有正确配置它们。
- 白名单插件
- 内容安全策略(元标记) 声明可以在客户端代码中访问哪些资源
<allow-intent>
告诉 native/compiled 应用程序哪些来源可用于数据(例如 XHR)<allow-navigation>
告诉 native/compiled 应用哪些来源可用于内容(例如整页导航)
请注意,CSP 和 <allow-intent/navigation>
标签必须匹配。 CSP 由 Web 视图中的客户端代码使用。 <allow-intent/navigation>
标签由 native/compiled 应用包装器使用。
要允许对应用程序本身之外的域进行数据访问,您需要修改内容安全策略 (CSP) 以识别外部权限。有一个很棒的教程 available here, but I've provided an example below. This CSP allows XHR requests and content to be loaded from https://thecatapi.com(一个愚蠢的 API 那 returns 猫图像):
在index.html...
<meta http-equiv="Content-Security-Policy" content="default-src 'self' content-src: https://thecatapi.com data: gap: https://ssl.gstatic.com https://thecatapi.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">
在config.xml...
<allow-intent href="https://thecatapi.com/*" />
<allow-navigation href="https://thecatapi.com/* />