【问题标题】:How to configure Content Security Policy and whitelist plugin for cordova to fetch local files如何为cordova配置内容安全策略和白名单插件以获取本地文件
【发布时间】:2020-09-28 22:13:49
【问题描述】:

得到错误 Cross origin requests 仅支持 iPhone cordova/phonegap 应用程序上的 HTTP。这在 Android 上运行良好。

var url = 'info.json'; // a localhost file in the www folder
var jqxhr = $.getJSON(url, function(data) {
    console.log( "LOADING SUCCESS: ",data );
}).fail(function(data) {
    console.log( "LOADING FAILED: ",data );
});

我尝试了许多内容安全策略。我最近使用的是:

default-src *  data: blob: filesystem: about: ws: wss: 'unsafe-inline' 'unsafe-eval' 'unsafe-dynamic'; 
script-src * data: blob: 'unsafe-inline' 'unsafe-eval'; 
connect-src * data: blob: 'unsafe-inline'; 
img-src * data: blob: 'unsafe-inline'; 
frame-src * data: blob: ; 
style-src * data: blob: 'unsafe-inline';
font-src * data: blob: 'unsafe-inline';

cordova-plugins-whitelist 的 config.xml 配置如下:

<allow-navigation href="*" />
<allow-intent href="*" />
<access origin="*" />

我也尝试过使用也会引发 CORS 错误的 cordova-plugin-file。我已经尝试删除平台并再次添加它。

我用phonegap准备ios,然后用xcode构建。

【问题讨论】:

    标签: cordova phonegap-plugins phonegap visual-studio-cordova


    【解决方案1】:

    如果您使用的是 iOS WKWebView,您将无法通过 XHR 访问文件。如果您使用的是cordova-ios cordova-plugin-file-xhr 插件。 问题是使用 WKWebView 的 XHR 调用没有设置来源并中断请求的 CORS,即使是到 localhost(通过 file://)。

    如果您使用的是 cordova-ios >= 6.0.0,则缺少此功能,您应该回退到 5.1.1

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-06
    • 2018-02-14
    • 2016-09-12
    • 2013-07-21
    • 2015-07-22
    相关资源
    最近更新 更多