关于axios请求时不带cookie或者cookie被过滤掉的解决方案

项目之前运行好好的,部署版本也正常,开发增加功能时,发现axios请求失败转向login。

代码没有变更过,前后端设置都正常。

前端中:

// 重点,启用安全凭证,即启用cookie axios.defaults.withCredentials = true

后端中:增加跨域放行并增加允许使用安全凭证

public class MyConfig implements WebMvcConfigurer { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("*") .allowedHeaders("*") .allowCredentials(true).maxAge(3600); } }

以上能够保证前后端分离情况下使用跨域请求,axios请求中会携带cookie信息。

但上周五突然发现cookie中无信息。

显示被筛选掉了,然后查看描述,百度搜索后意思为,浏览器增加了SameSite属性并默认设置为SameSite=Lax,此属性是因此安全性的问题增加的,如果非要使用可设置其为none,此设置在浏览器中设置

地址栏输入 se://flags/ 找到SameSite

设置后重启浏览器即请求正常了。

当然也可以使用安全的方法

使用反向代理服务器使前后端处于同一个域下就不存在跨域请求;使用JWT自定义方式进行安全权限校验。