项目之前运行好好的,部署版本也正常,开发增加功能时,发现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自定义方式进行安全权限校验。