我对此并不陌生,这可能是一个简单的问题。我已经在互联网上对此进行了足够的探索。我只需要对此问题有更多了解:
我正在使用它来获取一个json文件,该文件是目录结构中index.html
所在位置向下的一个层次。我正在使用jquery.ajax,如下所示:
$.ajax({
url: "../myFile.json",
dataType: 'json',
success: function(result, Status, jqXHR) {
MyFunction(result);
},
error: function(Status) {
alert(Status.statusText + ": Wrong input. Please check the file.");
}
});
在这里,我正在尝试访问myFile.json
,如下所示。这行不通,并且在Firefox中出现类似
(跨域请求被阻止:“相同来源策略”不允许读取远程资源...。)
当我将myFIle.json保留在index.html所在的同一目录(或目录层次结构中的上方)时,它绝对可以正常工作。
注意:我不在任何地方托管它。我刚刚制作了一个简单的index.html,并在firefox的计算机中运行它。
请对此问题进行一些说明。我想要在这里发生的事情后面有清晰的概念。
答案 0 :(得分:1)
这是“同源起源”策略。这是一项安全功能,您可以阅读有关在一般in this answer中如何实现的更多详细信息。
大多数浏览器do not allow you to read files from the file system。假设您双击电子邮件中遭到攻击的HTML,这是一项重要的安全功能。浏览器会将其保存到一个临时文件夹,浏览器将其打开,然后可以从硬盘的其他部分读取机密数据,并将其发送到攻击者的网站。
Firefox稍差一些。只要文件位于HTML文档所在文件的相同目录(或子目录)中,它就可以读取文件。
通过将JSON移至该目录之上的级别,可以将其移出浏览器信任JavaScript可以访问的区域。不要那样做。