javascript - 使用在 Firefox 中工作的文件 :///, AJAX 打开页面,而不是 Chrome 或 IE

标签 javascript jquery ajax file google-chrome

我有一个用作配置编辑器的网页,这意味着它将通过打开 .html 文件而不是使用 http 来访问。

此页面需要访问位于同一目录中的另一个文件(要编辑的配置文件)。使用相对路径 General.json 访问该文件。

            var getJSONFileContent = function( url ) {
                return $.ajax({
                    type: "GET",
                    url: url,
                    async: false
                }).responseText;
            };

            var currentConfigAsJson = getJSONFileContent( "General.json" );

它在 Firefox 上完美运行,无需更改设置或任何东西,但在 IE 和 chrome 上都失败。

Chrome 浏览器错误:

file:///C:/Users/XXX/Desktop/XXX/General.json.
Cross origin requests are only supported for protocol schemes: http, data, chrome, chrome-extension, https, chrome-extension-resource.m.ajaxTransport.send 
@ jquery-1.11.3.min.js:5m.extend.ajax
@ jquery-1.11.3.min.js:5getJSONFileContent
@ General.html:68(anonymous function)
@ General.html:75m.Callbacks.j
@ jquery-1.11.3.min.js:2m.Callbacks.k.fireWith
@ jquery-1.11.3.min.js:2m.extend.ready
@ jquery-1.11.3.min.js:2J
@ jquery-1.11.3.min.js:2

Internet Explorer 错误:

SCRIPT5: Access denied.
Fichier : jsoneditor.min.js, line : 7, column : 8725

我读到出于安全原因,这在 Chrome(可能还有 IE 和其他浏览器)上是被禁止的,并且我必须以特殊参数启动 chrome 才能绕过它。

但为什么它可以在 Firefox 上运行?有没有办法让它在 Chrome 上运行而无需在运行 chrome 时传递特殊参数?

是否有 Chrome 特定的功能可以让我在不更改设置或传递参数的情况下读取/写入文件?最终用户不想为此烦恼。

最佳答案

  • 要解决来源问题,请设置网络服务器并通过 localhost 托管您的页面。

  • 如果您要发布基于 HTML 的应用,您可能会在您的应用中包含网络服务器。

  • 另一种方法是尝试 NW (以前称为 NodeWebkit),其中包含一个具有非常高权限的 Chromium,可让您完成这项工作。


假设这行得通而那行不通的原因是基于个人意见的。但是Chrome和IE是某个公司的产品,而Firefox是Mozilla基金会支持的。因此,商业公司为了自身利益在安全问题上采取更加明智的行动是有道理的。同时,Mozilla 基金会希望在技术上进行更多的实验,因为 Brendan Eich(JavaScript 的创建者)在 Mozilla 中是一个大人物。

关于javascript - 使用在 Firefox 中工作的文件 :///, AJAX 打开页面,而不是 Chrome 或 IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31672834/

相关文章:

javascript - 将 json 对象的不同字段的值合并到单个数组中

javascript - React Component Prop 不会更新

javascript - 检测元素是否已停止动量滚动?

javascript - HTML 导航栏在悬停时不会更改背景颜色

javascript - JQuery点击功能没有触发

Javascript:如何强制 POST 请求将用户视为未经过身份验证

javascript - nodejs中有中文全文搜索引擎吗

javascript - 在 $.each 循环中,获取两种不同类型的对象返回值和未定义

php - 如何保护/编码 Javascript POST 请求

javascript - 手动呈现动态生成的 Google 'plus one' 按钮