为何浏览器对iframe请求的跨站判定:请求与Cookie规则不一致?
问题解答
请求被判定为同站的原因:Chrome浏览器把
127.0.0.1和localhost归为同一站点组,所以当127.0.0.1:5500的页面嵌入localhost:3000的iframe时,iframe内发起的请求会被识别为同站请求,自然能正常获取数据。Cookie被拦截的原因:这是Chrome默认的
SameSite规则在起作用。如果你的Cookie没有显式设置SameSite=None; Secure,Chrome会自动按SameSite=Lax处理。Lax模式下,Cookie只会在顶级导航(比如直接点击链接跳转)或者同站的GET请求中发送——而iframe属于子上下文,哪怕和父页面同站,只要不是顶级导航触发的请求,Lax模式的Cookie都会被拦截,浏览器就会提示"Cookie因跨站请求被阻止"。
另外要注意,Secure属性是SameSite=None的必填项,只有通过HTTPS传输的Cookie才能设置SameSite=None,本地环境下可以用Chrome调试参数临时绕过,但生产环境必须严格遵循规则。
内容的提问来源于stack exchange,提问作者dwjohnston
相关产品推荐
相关产品推荐

