我找到了简单的教程如何使跨域json调用here
它工作得很好,所以我决定使用这个例子,只需更改网址:
var url =“http://api.myjson.com/bins/23xvb”;
到
var url = "http://dl.sniper.pl/test.json"
不幸的是,更改它会返回这样的错误(在chrome中):
XMLHttpRequest无法加载http://dl.sniper.pl/test.json。回应 预检请求未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此,不允许原点'null'访问。
谷歌搜索该错误没有提供任何答案找到解决方案,所以这里的问题是: 为什么我会遇到这样的错误以及如何解决它?
答案 0 :(得分:0)
您应该在htaccess中配置服务器todo 你需要这样的东西
<RequireAll>
Require all granted
</RequireAll>
答案 1 :(得分:0)
http://dl.sniper.pl/服务器必须配置为在响应http://dl.sniper.pl/test.json请求时发送Access-Control-Allow-Origin
响应标头。
但由于该服务器未发送Access-Control-Allow-Origin
响应标头,因此您的浏览器拒绝允许您的前端JavaScript代码访问该响应。
因此,您要么必须配置http://dl.sniper.pl/服务器以发送Access-Control-Allow-Origin
,否则您可以通过CORS代理发出请求。
有一个开放的CORS代理,您可以通过将代码更改为此来请求您:
var url = "https://cors-anywhere.herokuapp.com/http://dl.sniper.pl/test.json"
通过开放的CORS代理https://cors-anywhere.herokuapp.com发送请求,该代理向其添加Access-Control-Allow-Origin
响应标头,然后将其作为响应传递回您的请求前端代码。
带有Access-Control-Allow-Origin
响应标头的响应是浏览器看到的,因此浏览器允许您的前端JavaScript代码实际访问响应。
您还可以使用https://github.com/Rob--W/cors-anywhere/
轻松设置自己的CORS代理有关使用XHR或JavaScript库中的Fetch API或AJAX方法发送跨代码请求前端JavaScript代码时浏览器的行为方式的说明,请参阅https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS,以及有关必须接收哪些响应标头的详细信息。命令浏览器允许前端代码访问响应。