Warm tip: This article is reproduced from serverfault.com, please click

reactjs-Stackexchange REST API已被CORS政策阻止

(reactjs - Stackexchange REST API has been blocked by CORS policy)

发布于 2020-11-28 23:03:02

我需要使用StackOverflow API从站点检索一些数据。实际上,当我第一次尝试使用API​​时,由于CORS政策,我遇到了异常。

通过CORS策略阻止从源“ http:// localhost:3000”访问“ https://stackoverflow.com/users/myID/reputation”处的访存:不存在“ Access-Control-Allow-Origin”标头在请求的资源上。如果不透明的响应满足你的需求,请将请求的模式设置为“ no-cors”,以在禁用CORS的情况下获取资源。

我知道我的请求被阻止的原因是响应头中没有标题。但是,StackExchange API是否不附加在响应标头Access-Control-Allow-Origin中?我在调用请求时做错了什么?

Questioner
AndreaCostanzo1
Viewed
0
CertainPerformance 2020-11-29 07:09:33

StackExchange API是否未附加在响应标头Access-Control-Allow-Origin中?我在调用请求时做错了什么?

Stack Exchange API允许客户端请求,但是你请求的页面不是Stack Exchange API-它只是一个普通的Stack Exchange页面,不是为此目的设计的API端点,因此它没有必需的标头。

如果要正确使用API​​,请浏览此处的文档然后选择所需的端点。对于使用我的用户ID的示例,可以使用以下代码:

fetch('https://api.stackexchange.com/2.2/users/9515207/reputation?site=stackoverflow')
  .then(res => res.json())
  .then(console.log);

api.stackexchange.com具有适当的标头:access-control-allow-origin: *,它允许客户端脚本请求它。

由于此请求是针对试用项目的,我可以使用某些平台的免费层来实现代理吗?我看到了很多有关Heroku的建议,但我对该平台不太熟悉

对于没有设置必需标头的服务器,在更一般的情况下,如果要在客户端使用其响应之一,则必须将请求从中继服务器退回。你可以在Heroku上制作自己的应用程序(一个不错的免费选项),也可以使用https://cors-anywhere.herokuapp.com/