【发布时间】:2015-10-18 19:17:41
【问题描述】:
我有一个用作配置编辑器的网页,这意味着将通过打开 .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 的功能可以让我在无需更改设置或传递参数的情况下读取/写入文件?最终用户不想为此烦恼。
【问题讨论】:
-
每个浏览器都有自己的本地文件保护策略。您可以更改它:wiki.fluidproject.org/display/fluid/…
-
Chrome 不允许 ajax 运行
file:
标签: javascript jquery ajax file google-chrome