将Access-Control-Allow-Origin:*轻松添加到JSON

时间:2017-07-07 20:53:18

标签: javascript php json cors

在我的网络服务器上,我有一个文件夹(比如链接:www.foo.com/json /)。

在这个链接里面,我有一个json文件,比如foo.json。我想从其他网站访问此文件。我试图研究“CORS”,但它似乎很复杂,我在我的网站foo.com上没有使用任何后端。我听说你可以简单地使用php并将其放入:

<?php
header("Access-Control-Allow-Origin: *");

如何将其添加到具有.json的文件夹中,以便我这样做:

$.getJSON("http://foo.com/json/foo.json", function(json) {
    console.log(json
)});

它不会抛出错误。我希望这很容易让任何网站都这样做,我只是不知道如何连接它。

2 个答案:

答案 0 :(得分:9)

选项1:使用PHP

您无法将其添加到.json文件中。您需要创建一个返回JSON数据的php文件。一个粗略的例子可能是:

/json/index.php?f=foo

header("Access-Control-Allow-Origin: *");
header("content-type: application/json");
echo file_get_contents($_REQUEST['f'].".json");

这将允许您设置Access-Control-Allow-Origin标头并将所需的json文件内容返回到远程调用:

$.getJSON("http://foo.com/json/index.php?f=foo", function(json) {
    console.log(json);
});

选项2:使用服务器配置

另一种选择是配置标头以应用于服务器配置中的json文件。使用Apache2,您可以将以下内容添加到服务器配置中,或在/ json目录中创建.htaccess文件以包含:

<Files "*.json">
  Header set Access-Control-Allow-Origin "*"
</Files>

这将自动包含所有json文件的标题。

答案 1 :(得分:1)

不要直接访问JSON文件,在中间使用PHP页面。所以你打电话给www.foo.com/json/,它将运行该文件夹中的默认PHP文件(比如index.php)。现在这个PHP页面将像你提到的那样设置CORS头 标题(&#34; content-type:application / json&#34;);

header("Access-Control-Allow-Origin: *");

然后读取JSON文件并将其与正确的MIME类型一起添加到响应中:

header("content-type: application/json");