我正在使用three.js为cordova制作一个Android应用程序。但问题是我无法通过file:// protocol从javascript加载图像。 我一直在Chrome控制台中收到以下错误
从'null'访问'file://image.png/'中的图像已经是 被CORS策略阻止:响应无效。因此,原点'null' 不允许访问。
此错误是由以下代码段引起的:
var Texture1 = THREE.ImageUtils.loadTexture('/image.png'),
Texture2 = THREE.ImageUtils.loadTexture('/image2.png');
相同的代码不在本地浏览器中运行(文件协议),但是当我将其连接到localhost:8000(http协议)时它会运行。我知道这是一个CORS问题但是cordova白名单插件声明file://应该是可访问的,但它们不是。
这是来自config.xml的我的片段
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" />
<allow-navigation href="file://*" />
<allow-navigation href="*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
答案 0 :(得分:0)
我建议在index.html中添加自由内容安全策略,例如:
<meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com *; style-src 'self' 'unsafe-inline' 'unsafe-eval' *; media-src *; img-src 'self' data: content: *; script-src * 'self' 'unsafe-inline' 'unsafe-eval';">