我需要使用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中?我在调用请求时做错了什么?
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/
非常感谢,我错过了要使用的端点,而我刚经历了堆栈溢出