我正在基于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,我拒绝相信这是唯一的方式
答案 0 :(得分:0)
我也遇到了同样的问题,在研究了许多小时后,CORS的实际工作原理得出的结论是,建立像charlietfl这样的代理人建议是在本地开发时避免CORS问题的最佳方法。代理处理您在客户端上执行的每个请求,并将它们重新路由到原始目的地。这样,您可能不会遇到任何CORS问题。
示例:https://github.com/marhaupe/node-react-bootstrap。
在此处了解有关此内容的更多信息:
答案 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>