关于
chrome升级到80版本之后(最坑的地方:灰度测试,即也可能存在同一版本不同人的浏览器表现不同),cookie的SameSite属性默认值由None变为Lax
在Lax模式下,以下类型请求将受影响:
| 请求类型 | 示例 | 正常模式 | Lax模式 |
|---|---|---|---|
| 链接 | 发送 Cookie | 发送 Cookie | |
| 预加载 | 发送 Cookie | 发送 Cookie | |
| GET 表单 | 发送 Cookie | 发送 Cookie | |
| POST 表单 | 发送 Cookie | 不发送 Cookie | |
| iframe | 发送 Cookie | 不发送 Cookie | |
| AJAX | $.get("…") | 发送 Cookie | 不发送 Cookie |
| Image | 发送 Cookie | 不发送 Cookie |
解决方法1
将前后端项目部署到一起,同源不存在跨域。
如果是多个项目,也可以部署在一起,xxx.com/x、xxx.com/y、xxx.com/z
解决方法2
配置谷歌浏览器跨域策略
谷歌浏览器打开 chrome://flags/
搜索cookies
修改如下部分
修改完成点击右下角重启浏览器即可
常见的跨域
1、协议不同,https和http
2、主机不同,ip不同
3、端口号不同
4、服务端做了限制
常见的前端请求错误
1、请求方式错误、get,post等
2、请求头错误,contentType
3、未带cookie,withCredentials
特殊情况
未登陆请求需要登陆的接口出现跨域,很可能是跨域拦截配置在了登陆拦截前面导致
