虚拟主机 部署网站吗,电脑网址打不开网页怎么办,企业年金查询个人账户查询,建设一个类似淘宝的网站背景
我们知道很多场景#xff0c;都需要前端请求带上cookie#xff0c;例如用户鉴权、登陆校验等。而有些场景下#xff0c;我们会发现请求不会带上cookie#xff0c;这是为什么呢#xff1f;
概念
cookie是种在域名下的信息。只有请求同域且同站的请求#xff0c;才…背景
我们知道很多场景都需要前端请求带上cookie例如用户鉴权、登陆校验等。而有些场景下我们会发现请求不会带上cookie这是为什么呢
概念
cookie是种在域名下的信息。只有请求同域且同站的请求才能携带cookie。
首先我们需要了解跨站cross-site和跨域cross-origin是两个概念 同站指只要两个 URL 的 eTLD1 相同即可有效顶级域名二级域名不需要考虑协议和端口 同源指协议/主机名/端口完全一致
浏览器的默认配置same-site:Lax意味着部分cookie允许跨站请求携带需同时满足以下条件 顶级导航链接如a标签iframe不行 GET、HEAD请求POST不行
Secure: 只有HTTPS请求才会带cookie
HttpOnly: 客户端无法读取和修改cookie。
跨域能否携带cookie
理论上我们解决跨域问题无非是两种方式
1. 直接请求跨域域名前端设置withCredentials然后后端设置CORS请求头来允许跨域。
2. 通过后端代理的方式先访问同域名的后端服务然后在后端转发到其他服务。
第一种方法在same-site:Lax的情况下是无法携带跨站cookie的。
第二种方法可以携带cookie。
解决方案
1. 通过设置浏览器中的same-site: None和HttpOnly: true来实现跨站的cookie携带。但是这种方法基本只能解决本地调试问题线上不可能通过这种方法。
2. 通过代理的方式携带cookie。推荐使用这种方案。