我有一个网页作为配置编辑器,这意味着它将通过打开.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时传递特殊参数?
解决方法
>要解决原始问题,请设置Web服务器并通过localhost托管您的页面.
>如果您要发布基于HTML的应用程序,则可能在应用程序中包含Web服务器.
>另一种方法是尝试 NW(以前的NodeWebkit),其中包括具有非常高权限的Chromium,允许您完成工作.
>如果您要发布基于HTML的应用程序,则可能在应用程序中包含Web服务器.
>另一种方法是尝试 NW(以前的NodeWebkit),其中包括具有非常高权限的Chromium,允许您完成工作.
这是相当意见的基础,以假设其工作的原因,而不是.但Chrome和IE是属于某些公司的产品,而Firefox则由Mozilla基金会支持.因此,商业公司在安全问题上对其利益采取更为明智的行为是有道理的.与此同时,Mozilla基金会希望在技术方面更具实验性,因为关于Brendan Eich(JavaScript的创建者)在Mozilla中是一个很重要的.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。