来自本地文件的jQuery ajax请求(Origin'null'不允许访问)

时间:2017-03-25 19:56:53

标签: javascript php jquery json ajax

我正在从本地文件进行jQuery ajax调用,该文件从网络服务器检索JSON数据:

$.ajax({
    type: 'GET',
    url: 'http://mywebsite.com/data.json',
    dataType: 'json',
    success: showData
});

我在chrome上遇到以下错误:

XMLHttpRequest cannot load http://mywebsite.com/data.json. No 
'Access-Control-Allow-Origin' header is present on the requested 
resource. Origin 'null' is therefore not allowed access.

我已经阅读了很多其他答案,这些答案似乎得出的结论是,您无法使用chrome从本地文件发出ajax请求,因此解决方案是:

  • 托管在服务器上发出请求的文件
  • 使用“--allow-file-access-from-files”标志
  • 运行chrome

但这些选项都不适合我。

但是,当我在另一个站点(myjson.com)上托管JSON数据时,ajax请求中的行读取

url: 'https://api.myjson.com/bins/myfile'

文件加载完美,数据正确显示。

为什么ajax请求允许'myjson.com'而不是'mywebsite.com'?

编辑:

我有一行

Header set Access-Control-Allow-Origin "*"

在我的apache2.conf文件中

1 个答案:

答案 0 :(得分:0)

您需要做的是在文档根目录中创建一个.htaccess文件,并为其添加以下行:

<FilesMatch "\.(json)$">
    Header set Access-Control-Allow-Origin "*"
</FilesMatch>

上述内容的作用是,它们允许.json文件上所有域的跨域资源共享,从而消除错误。