Closed gricn closed 7 months ago
今天在访问v2ex过程中,也遇到了 #47 所描述预加载多页失败。通过分析发现是由于CORS所致。
首先,v2ex有众多二级域名,最常见的如www, global, hk, cn等。正如Livid在该回复谈及:
www
global
hk
cn
V2EX二级域名是用来测试不同的 CDN 的域名。
而目前上述4个二级域名均被该插件支持。
其次,由于用户访问IP差异,如打开某热门回答,会进入hk二级域名。如:https://hk.v2ex.com/t/1029673?p=1. 但在预加载多页过程中,由于代码层默认访问的是Origin是V2EX.Origin,也就是https://www.v2ex.com,所以会请求访问https://www.v2ex.com/t/1029673?p=2. 此时由于域名不同,不符合CORS原则,且v2ex站点服务器端没有设置Access-Control-Allow-Origin,将导致预加载失败。
V2EX.Origin
https://www.v2ex.com
Access-Control-Allow-Origin
将V2EX.Origin修改成window.location.origin
window.location.origin
#78 已发pr,在本地Chrome测试已修复问题
感谢你的贡献,该问题已被改善~
今天在访问v2ex过程中,也遇到了 #47 所描述预加载多页失败。通过分析发现是由于CORS所致。
分析过程
首先,v2ex有众多二级域名,最常见的如
www
,global
,hk
,cn
等。正如Livid在该回复谈及:而目前上述4个二级域名均被该插件支持。
其次,由于用户访问IP差异,如打开某热门回答,会进入hk二级域名。如:https://hk.v2ex.com/t/1029673?p=1. 但在预加载多页过程中,由于代码层默认访问的是Origin是
V2EX.Origin
,也就是https://www.v2ex.com
,所以会请求访问https://www.v2ex.com/t/1029673?p=2. 此时由于域名不同,不符合CORS原则,且v2ex站点服务器端没有设置Access-Control-Allow-Origin
,将导致预加载失败。解决思路
将
V2EX.Origin
修改成window.location.origin