avatar

前后端分离跨域以及cookie写入问题

SpringBoot 2.4.0项目跨域、Cookie问题

当时配置如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Configuration
public class GlobalCorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
//允许所有域名进行跨域调用
config.addAllowedOrigin("*");
//允许跨越发送cookie
config.setAllowCredentials(true);
//放行全部原始头信息
config.addAllowedHeader("*");
//允许所有请求方法跨域调用
config.addAllowedMethod("*");
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}

遇到以下错误信息

1
java.lang.IllegalArgumentException: When allowCredentials is true, allowedOrigins cannot contain the special value "*"since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of origins, list them explicitly or consider using "allowedOriginPatterns" instead.

意思为,配置了allowCredentials为true后,不能将allowedOrigins设置为*,所以在这里将他改为前端域名,即可解决

1
config.addAllowedOrigin("http://localhost:8090");

之后,登录成功,发现生成cookie无法写入浏览器中

在配置好后端后,我前端向后端发送登录请求,请求响应中又set-cookie,但是application中没有cookie

image-20201203200315106

image-20201203200413936

查找资料后发现:

在前端main.js中加入axios全局配置,允许后端写入cookie到浏览器中,即可解决

1
2
// 允许后端将cookie写入
axios.defaults.withCredentials = true
文章作者: Hobo
文章链接: https://hobo-clh.github.io/2020/12/03/%E5%89%8D%E5%90%8E%E7%AB%AF%E5%88%86%E7%A6%BB-cookie/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hobo's blog
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论