微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 使用File:///打开页面,AJAX在Firefox中运行,而不是Chrome或IE

我有一个网页作为配置编辑器,这意味着它将通过打开.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特定的功能,允许我读取/写入文件,而无需更改设置或传递参数?最终用户不想打扰它.

解决方法

>要解决原始问题,请设置Web服务器并通过localhost托管您的页面.
>如果您要发布基于HTML的应用程序,则可能在应用程序中包含Web服务器.
>另一种方法是尝试 NW(以前的NodeWebkit),其中包括具有非常高权限的Chromium,允许您完成工作.

这是相当意见的基础,以假设其工作的原因,而不是.但Chrome和IE是属于某些公司的产品,而Firefox则由Mozilla基金会支持.因此,商业公司在安全问题上对其利益采取更为明智的行为是有道理的.与此同时,Mozilla基金会希望在技术方面更具实验性,因为关于Brendan Eich(JavaScript的创建者)在Mozilla中是一个很重要的.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐