【问题标题】:spring rest api unable to set Set-Cookiespring rest api 无法设置 Set-Cookie
【发布时间】:2019-08-02 14:17:22
【问题描述】:

环境

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();
}

我的 cors 配置正确

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

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

仍然没有发送标头 set-cookie。

当我使用 Angular 应用程序发送请求时也会发生同样的情况

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

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

问题

如何在前端(Angular 或邮递员)上显示我的标题?

【问题讨论】:

    标签: spring-boot spring-mvc spring-restcontroller setcookie


    【解决方案1】:

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

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

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

    可以在“设置”>“高级设置”>“隐私”>“内容设置”>“阻止第三方 cookie 和站点数据”中停用)

    解决方法

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

    【讨论】:

      猜你喜欢
      • 2022-08-17
      • 2018-11-12
      • 2020-09-07
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 1970-01-01
      • 2019-07-22
      • 2021-01-11
      相关资源
      最近更新 更多