getJSON 在 chrome 上本地加载 json 数据文件时出错 [重复]
Posted
技术标签:
【中文标题】getJSON 在 chrome 上本地加载 json 数据文件时出错 [重复]【英文标题】:Error with getJSON to load json data file locally on chrome [duplicate] 【发布时间】: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 );
我在网上冲浪寻找解决方案,并想出了这两种在我的情况下不起作用的解决方案:
-
在 chrome 上手动启用 access-control-allow-origin
在服务器上上传项目文件
我正在寻找本地加载 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 感谢您的意见。问题是我想要一个解决方案,而不是在服务器上甚至在本地运行项目。
插入了作者评论中的代码示例;改进的格式。请澄清:“本地加载”是否意味着加载的页面和加载的文件都是本地的?
【参考方案1】:
我认为没有跨浏览器解决方案,因为它是一种保护用户数据的安全措施,而浏览器的管理员实际上会故意阻止这种情况。在 Chrome 中,您可以在启动时使用--allow-file-access-from-files
选项,但这不是普通用户会接受的,而且(不知何故)没有办法限制仅对某些文件的偏好,因此这又会导致安全问题。
不过,如果您创建 本地 服务器,将您要加载的文件 和 正在加载文件的页面放在服务器上,这成为可能.这是非常可行的,有许多本地服务器适用于 Android 并且可能适用于其他操作系统。
PS 你也可以创建一个浏览器扩展。由于当今许多浏览器(Opera、Vivaldi、Yandex 等)甚至 FireFox 都支持 Chromium 扩展,因此它可能是一个有趣的选择。但是你必须了解扩展的确切限制,我不是这方面的专家。
【讨论】:
【参考方案2】:这个 chrome 扩展帮助我解决了 chrome 中的同样问题,请查看 Allow-Control-Allow-Origin: *
【讨论】:
感谢 jNg。是的,这很好,但我在一个跨平台项目上工作,所以在这种情况下有替代方案吗?我可以使用 javascript 允许此 chrome 策略吗? 我不知道,但我会做一些研究以上是关于getJSON 在 chrome 上本地加载 json 数据文件时出错 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
JQuery $.getJSON 加载本地 JSON 文件不起作用