我一直在搞乱从API中提取数据,但由于某种原因,它给了我这个错误,我不知道如何解决这个问题:
阻止跨源请求:同源策略禁止在https://battlefieldtracker.com/bf1/api/Stats/DetailedStats?platform=2&personaId=376461834&displayName=TR_ISMAIL_TR&game=tunguska读取远程资源。 (原因:缺少CORS标题'Access-Control-Allow-Origin'。
所以我从http://docs.trnbattlefield.apiary.io/#introduction/parameters/platform生成了这个网址,我可以在该网站上看到我在战地1中的游戏统计信息,但是当我将网址粘贴到网上时,它给了我一个糟糕的请求。
所以有人知道如何解决这个问题吗?
答案 0 :(得分:0)
如果您使用AJAX尝试将数据类型设置为JSONP
$.ajax({
url:"END POINT",
dataType: 'jsonp', // Notice! JSONP <-- P (lowercase)
success:function(json){
alert("Success");
},
error:function(){
alert("Error");
}
});
答案 1 :(得分:0)
如果服务器不允许,则无法进行跨域AJAX请求(有时可能会出现“飞行前”请求,详细解释为here)。< / p>
您可以执行的操作,如果您可以控制您的网络服务器,则制作反向代理,以便使用本地网址访问远程数据。
以下是使用Apache的方法(需要启用mod_proxy):
< VirtualHost *:80 >
ServerName www.yourserver.com
ProxyPreserveHost On
ProxyRequests On
ProxyPass /bfapi/ https://battlefieldtracker.com/bf1/api/
ProxyPassReverse /bfapi/ https://battlefieldtracker.com/bf1/api/
< /VirtualHost >
如果您使用Nginx,请将其放在配置文件的服务器部分中:
location /bfapi/ {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header Host $host;
proxy_pass https://battlefieldtracker.com/bf1/api/;
}
这样您就可以使用以下网址调用API:https://yourserver.com/bfapi/Stats/DetailedStats?platform=2&personaId=376461834&displayName=TR_ISMAIL_TR&game=tunguska
当然,您必须将yourserver.com替换为您自己的域名。