![CORS 策略:JSON 文件不支持“Access-Control-Allow-Origin”](https://linux22.com/image/740947/CORS%20%E7%AD%96%E7%95%A5%EF%BC%9AJSON%20%E6%96%87%E4%BB%B6%E4%B8%8D%E6%94%AF%E6%8C%81%E2%80%9CAccess-Control-Allow-Origin%E2%80%9D.png)
我在服务器 A 中保存了一个 JSON 文件,ip:111.111.111.111/folder1/a.json
从服务器 B [ ip: 444.444.444.444 ],我尝试访问该 JSON 文件,收到以下结果:
访问 XMLHttpRequest 'http://111.111.111.111/a.json' 来自起源 'http://444.444.444.444' 已被 CORS 策略阻止:请求的资源上不存在 'Access-Control-Allow-Origin' 标头。
我在 111.111.111.111/index.php 中编写了以下代码,但收到了同样的错误:
<?php
Access-Control-Allow-Origin: "http://444.444.444.444"
Access-Control-Allow-Origin: *
Header set Access-Control-Allow-Origin: *
?>
使用以下 JavaScript 代码访问 JSON:
$.getJSON("http://111.111.111.111/folder1/a.json", (data) => { }
答案1
您的访问控制策略需要在与请求的资源相同的 URL 上设置。
我的意思是,如果您要请求访问/folder1/a.json
,则需要在该特定 URL 的请求上设置访问控制标头。
您可以通过您的服务器(Apache / Nginx / ...)添加这些标题,或者创建一个像您制作的一样的 php 脚本来设置这些标题并返回 json 文件内容(即/folder1/a.json.php
)。
顺便说一句,你的代码不是有效的 PHP,请使用header(...)
功能。
您可以使用这样的脚本:
<?php
header('Access-Control-Allow-Origin: http://444.444.444.444/*');
header('Content-Type: application/json; charset=utf-8');
die(file_get_contents('a.json'));
?>