-
问题描述:父页面通过iframe嵌入一个跨域的子页面,子页面的cookie设置不成功,也无法读取到,导致在请求拦截器时添加的请求头token信息为null,接口401(鉴权失败)。但是单独访问子页面是正常的。
-
原因:浏览器的跨域访问限制
-
解决方案:在需要嵌入的页面设置cookie的时候增加SameSite=none 和 Secure=true(2个是缺一不可的)
document.cookie = “foo=1;SameSite=none;Secure”
// js-cookie
import Cookies from 'js-cookie'
const TokenKey = 'vue_demo_token'
function setToken (token) {
return Cookies.set(TokenKey, JSON.stringify(token),{SameSite:'None',Secure:true})
}