如何为cordova配置内容安全策略和白名单插件以获取本地文件?

问题描述 投票:0回答:1

得到错误的跨源请求只支持HTTP在iPhone cordovaphonegap应用程序。这在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="*" />

我也试过使用cordova-plugin-file,也会出现CORS错误。我试过删除平台,然后再添加。

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

cordova phonegap-plugins phonegap visual-studio-cordova
1个回答
0
投票

如果你使用的是iOS WKWebView,你将无法通过XHR访问文件。如果你使用的是cordova-ios < 6.0.0,那么你可以在XHR中添加以下内容 cordova-plugin-file-xhr)。 插件.问题是WKWebView的XHR调用没有设置原点,并且中断了CORS请求,即使是对localhost(通过file:/)。

如果你正在使用cordova-ios >= 6.0.0,那么这个功能是缺失的,你应该回到5.1.1。

© www.soinside.com 2019 - 2024. All rights reserved.