jquery.ajax中的相对路径问题

时间:2019-05-20 13:15:45

标签: jquery html ajax

我对此并不陌生,这可能是一个简单的问题。我已经在互联网上对此进行了足够的探索。我只需要对此问题有更多了解: 我正在使用它来获取一个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的计算机中运行它。

请对此问题进行一些说明。我想要在这里发生的事情后面有清晰的概念。

1 个答案:

答案 0 :(得分:1)

这是“同源起源”策略。这是一项安全功能,您可以阅读有关在一般in this answer中如何实现的更多详细信息。

大多数浏览器do not allow you to read files from the file system。假设您双击电子邮件中遭到攻击的HTML,这是一项重要的安全功能。浏览器会将其保存到一个临时文件夹,浏览器将其打开,然后可以从硬盘的其他部分读取机密数据,并将其发送到攻击者的网站。

Firefox稍差一些。只要文件位于HTML文档所在文件的相同目录(或子目录)中,它就可以读取文件。

通过将JSON移至该目录之上的级别,可以将其移出浏览器信任JavaScript可以访问的区域。不要那样做。