最近在学习一个前后端分离的项目,有一个需求是:后端生成验证码,并保存在session中。
但是会存在一些问题,因为不同源,所以存在跨域,导致cookie不能被后端接收到,从而导致无法使用session,后来查阅资料解决了,特此记录一些。
后端需要允许跨域,全局配置:
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
//设置允许跨域的路径
registry.addMapping("/**")
//是否允许证书,不再默认开启
.allowCredentials(true)
.allowedOrigins("http://localhost:8080")
//设置允许的方法
.allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
//跨域允许时间
.maxAge(3600);
}
}
后端允许跨域还不行,前端也必须配置,因为跨域请求下,请求并不会携带cookie。
因为我前端使用的是vue + axios ,所以配置如下:
import $http from 'axios'
$http.defaults.withCredentials=true;
至此,跨域问题完全解决了。