使用提取API

时间:2018-11-10 15:03:13

标签: javascript rest api cors fetch

我正在基于Challonge API制作此JavaScript项目。

每当我尝试使用访存来获取或发布任何数据时,都会返回臭名昭著的CORS错误:

  

通过CORS策略阻止从原点“ https://api.challonge.com/v1/tournaments.json?api_key=censored”到“ http://127.0.0.1:8080”的访存:所请求的资源上没有“ Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“ no-cors”以在禁用CORS的情况下获取资源。

每当我使用“ Allow-Control-Allow-Origin *”扩展名时,它都可以完美运行,但是,出于明显的原因,但是,我不能要求我的客户下载此扩展名以使用我的应用程序。我也曾尝试将项目上传到网络服务器,但没有成功。

我一直在网上寻找解决方案,但是我要么能力不强,就无法在我眼前看到答案,要么我看起来还不够长。

无论哪种方式,你们中的任何一个都可以朝着正确的方向轻推我吗?

编辑:我尝试将请求模式更改为无费用,相同来源和费用,但无济于事。

编辑2:我看到的很多“修复”都围绕着更改服务器端.htaccess以允许我的域,但是我没有使用Challonge API,我拒绝相信这是唯一的方式

2 个答案:

答案 0 :(得分:0)

我也遇到了同样的问题,在研究了许多小时后,CORS的实际工作原理得出的结论是,建立像charlietfl这样的代理人建议是在本地开发时避免CORS问题的最佳方法。代理处理您在客户端上执行的每个请求,并将它们重新路由到原始目的地。这样,您可能不会遇到任何CORS问题。

示例:https://github.com/marhaupe/node-react-bootstrap

在此处了解有关此内容的更多信息:

https://stackoverflow.com/a/36959539/7471182

http://performantcode.com/web/do-you-really-know-cors

答案 1 :(得分:0)

一个简单的方法是使用您的服务器请求API并将其显示在网页上,然后让您的客户端请求该网页。很简单的例子:

server.php:

echo file_get_contents('https://api.challonge.com/v1/tournaments.json?api_key=censored');

client.html:

<script>
  $.get("server.php", function(data, status){
    // stuff
  });
</script>