【问题标题】:Error with getJSON to load json data file locally on chrome [duplicate]getJSON 在 chrome 上本地加载 json 数据文件时出错 [重复]
【发布时间】:2017-11-18 00:11:36
【问题描述】:

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

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 );

我在网上冲浪寻找解决方案,并想出了这两种在我的情况下不起作用的解决方案:

  1. 在 chrome 上手动启用 access-control-allow-origin
  2. 在服务器上上传项目文件

我正在寻找本地加载 json 数据的解决方案。

非常感谢您的帮助!

【问题讨论】:

  • 请从您的项目中添加一些代码示例以获得帮助。
  • 1.使用 HBuilder 这个 Eclipse 克隆 IDE 并在本地 Web 服务器中自动查看本地文件或 2. 将 JSON 线程化为 js 文件并在生产环境中使用时将其改回
  • @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 );
  • @YuJiaao 感谢您的意见。问题是我想要一个解决方案,而不是在服务器上甚至在本地运行项目。
  • 插入了作者评论中的代码示例;改进的格式。请澄清:“本地加载”是否意味着加载的页面和加载的文件都是本地的?

标签: javascript json google-chrome cross-platform getjson


【解决方案1】:

我认为没有跨浏览器解决方案,因为它是一种保护用户数据的安全措施,而浏览器的管理员实际上会故意阻止这种情况。在 Chrome 中,您可以在启动时使用--allow-file-access-from-files 选项,但这不是普通用户会接受的,而且(不知何故)没有办法限制仅对某些文件的偏好,因此这又会导致安全问题。

不过,如果您创建 本地 服务器,将您要加载的文件 正在加载文件的页面放在服务器上,这成为可能.这是非常可行的,有许多本地服务器适用于 Android 并且可能适用于其他操作系统。

PS 你也可以创建一个浏览器扩展。由于当今许多浏览器(Opera、Vivaldi、Yandex 等)甚至 FireFox 都支持 Chromium 扩展,因此它可能是一个有趣的选择。但是你必须了解扩展的确切限制,我不是这方面的专家。

【讨论】:

    【解决方案2】:

    这个 chrome 扩展帮助我解决了 chrome 中的同样问题,请查看 Allow-Control-Allow-Origin: *

    【讨论】:

    • 感谢 jNg。是的,这很好,但我在一个跨平台项目上工作,所以在这种情况下有替代方案吗?我可以使用 javascript 允许此 chrome 策略吗?
    • 我不知道,但我会做一些研究
    猜你喜欢
    • 1970-01-01
    • 2019-05-30
    • 2012-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    相关资源
    最近更新 更多