我需要使用StackOverflow API从站点检索一些数据。事实上,当我第一次尝试使用API时,由于CORS策略,我得到了一个异常。
在'获取的访问权限https://stackoverflow.com/users/myID/reputation'来自原点'http://localhost:3000'已被CORS策略阻止:请求的上不存在"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/