2017-06-15 150 views
0

我正在开发一个跨平台(html5)项目,稍后在Android和iOS上启动,我遇到了一个问题getJSON从本地加载.json文件中的数据在Chrome浏览器上。当调用getJSON在chrome上本地加载json数据文件时出错

jQuery.getJSON("layout.json", this.onLoaded); 

我得到

Error: XMLHttpRequest cannot load file:///E:/app/layout.json. Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https`

在jQuery的3.2.1.js:9566这就是:xhr.send(options.hasContent && options.data || null);

我已经过互联网寻找解决方案,并与这些想出了两种解决方案不适用于我的情况:

  1. 在chrome上手动启用访问控制允许来源
  2. 上传服务器

我正在寻找一个解决方案在本地加载JSON数据的项目文件。

非常感谢您的帮助!

+0

请从您的项目中添加一些代码示例以获得帮助。 – arturkin

+0

1.使用'HBuilder'这个eclipse克隆IDE并在本地Web服务器中自动查看本地文件或2.在生产环境中使用JSON文件并将其更改回 –

+0

@arturkin这里是代码示例和错误我得到了: jQuery.getJSON(“layout.json”,this.onLoaded); 错误: XMLHttpRequest无法加载file:/// E:/app/layout.json。协议方案仅支持跨源请求:http,data,chrome,chrome-extension,https。 jquery-3.2.1.js:9566这就是:xhr.send(options.hasContent && options.data || null); – Mahmoud

回答

1

这个Chrome扩展帮助我在Chrome同样的问题,检查出来允许-控制允许来源:*

+0

谢谢jNg。是的,这工作正常,但我在跨平台项目上工作,所以在这种情况下是否有替代方案?我可以允许使用JavaScript的Chrome浏览器政策吗? – Mahmoud

+0

我不能说,但我会做一些研究 – Jonathan

1

我不认为有一个跨浏览器的解决方案,因为它是一个安全措施保护用户的数据和浏览器的verndors实际上阻止这个意图。在Chrome中,您可以在启动时使用--allow-file-access-from-files选项,但这不是普通用户可以接受的,也有(某些情况下)无法限制某些文件的偏好,因此会再次导致安全问题。

不过,如果你创建一个本地服务器,把你想载入这是加载服务器上的文件的页面文件,这成为可能。这是非常可行的,有很多本地服务器适用于Android,可能适用于其他操作系统。

PS您还可以创建浏览器扩展。由于现在许多浏览器都支持Chromium扩展(Opera,Vivaldi,Yandex等),甚至FireFox,它可能是一个有趣的选择。但是你必须学习扩展的确切限制,我不是这方面的专家。