#1 - 2018-6-2 20:39
upsuper
在 https://api.bgm.tv 上有一些非常方便的获取数据用的API对组件的开发非常有帮助。
通过API调用,既省去了组件脚本加载和解析页面的麻烦,又减小了服务器的处理负担。
然而现在并不能在组件中向API发送请求,因为存在跨域。
因此希望能够至少为API服务器增加如下CORS头:
以方便在组件的实现中使用API来获取数据。
通过API调用,既省去了组件脚本加载和解析页面的麻烦,又减小了服务器的处理负担。
然而现在并不能在组件中向API发送请求,因为存在跨域。
因此希望能够至少为API服务器增加如下CORS头:
Access-Control-Allow-Origin: https://bgm.tv, http://bgm.tv, http://bangumi.tv, http://chii.in
以方便在组件的实现中使用API来获取数据。
不过有一个小问题,似乎Access-Control-Allow-Origin的值是根据请求的referrer或者origin来决定的?如果这样的话,可能需要将相应的头加入vary头,不然的话在一个域名下请求后到另一个域名下再请求同样的内容会被拒绝。
因为API在HTTPS上,所以唯一可能影响的情况应该也就是一个人通过多个不同域名登入然后请求同一个网址了。大概大多数时候不会成为一个问题。
所以Vary还是没有加上的样子?
为了避免这种情况发生,服务器返回的时候应该说明,返回的结果会根据Origin/Referer发生变化,如果请求头中相应字段的值不同,需要重新向服务器发送请求,而不能使用缓存的结果。也就是说,Vary应该加上Origin或者Referer(取决于具体你使用的方式),比如说变成
文档可以参考 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Vary