调用StackOverflow API遭CORS策略拦截,咨询API响应头及调用问题
关于StackOverflow API的CORS问题解答
嘿,我来帮你搞定这个CORS的坑~
首先得明确:StackExchange官方API是支持CORS的,响应头里会带上Access-Control-Allow-Origin: *,但你之前的请求方式搞错了!
你直接请求的https://stackoverflow.com/users/myID/reputation是StackOverflow主站的用户页面URL,这个是给人浏览的网页,不是供前端调用的API端点,所以主站不会给这类请求加CORS允许的响应头,自然会触发拦截。
正确的做法是使用官方API端点:
官方API的域名是api.stackexchange.com,获取用户声望的正确接口格式应该是这样的:
https://api.stackexchange.com/2.3/users/{你的用户ID}/reputation?site=stackoverflow
这个接口的响应头里会包含Access-Control-Allow-Origin: *,浏览器端直接AJAX调用完全没问题。
额外注意几点:
- 必须带上
site=stackoverflow参数,指定要访问的站点(StackExchange旗下有很多站点,比如StackOverflow、SuperUser等) - 如果你的请求频率较高,建议申请一个API密钥(在StackExchange开发者页面获取),通过
key参数传递,这样能提升请求限流的阈值 - 别用
no-cors模式!这种模式下浏览器虽然不会报错,但你完全拿不到响应的数据,根本没法处理用户声望信息,纯属饮鸩止渴
内容的提问来源于stack exchange,提问作者Andrea Costanzo
相关产品推荐
相关产品推荐

