从API请求数据时出现此错误

时间:2017-02-14 09:44:19

标签: javascript jquery json api

我一直在搞乱从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中的游戏统计信息,但是当我将网址粘贴到网上时,它给了我一个糟糕的请求。

所以有人知道如何解决这个问题吗?

2 个答案:

答案 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替换为您自己的域名。