spring rest api无法设置Set-Cookie

问题描述 投票:0回答:1

环境

springBootVersion ='2.1.0.RELEASE'

Linux:18.01 LTS

上下文

我在控制器中有当前的方法:

@PostMapping(value = "")
public ResponseEntity<String> login(@RequestBody @Valid LoginCredentials loginCredentials) {
    return ResponseEntity.status(HttpStatus.OK)
        .header(HttpHeaders.SET_COOKIE, "Authorization=" + "Bearer " + token)
        .build();
}

我的角色配置正确

@Override
public void addCorsMappings(CorsRegistry registry) {
    registry.addMapping("/**")
        .allowedOrigins("*")
        .allowedHeaders("*")
        .allowedMethods("*")
        .allowCredentials(true);
}

我也告诉邮递员,标题是正确的

enter image description here

仍然没有发送标头集cookie。

当我使用angular app发送请求时也会发生同样的情况

    return this.http.post(this.LOGIN_URL, loginCred, {withCredentials: true});

如您所见,凭据设置为true。仍然我没有得到我的Set-cookie标头。

如何在前端(Angular或postman)上设置标题?

spring-boot spring-mvc cors spring-restcontroller setcookie
1个回答
0
投票

经过几个小时的搜索,我找到了主要原因。

我的frontent在localhost上运行:4200我的后端运行在localhost:8090上

当后端发送设置cookie时,谷歌浏览器会阻止它,因为cookie是由第三方域设置的。

它可以在设置>高级设置>隐私>内容设置>阻止第三方cookie和站点数据中取消激活

解决

获取前端的令牌作为响应的主体,并通过前端业务逻辑(本地存储或设置cookie)将其设置在那里

© www.soinside.com 2019 - 2024. All rights reserved.