【问题标题】:Keeping session cookie with angular 4.3使用 Angular 4.3 保存会话 cookie
【发布时间】:2018-01-24 02:16:59
【问题描述】:

我正在尝试对 Spring Boot 后端进行身份验证并获取一些数据

this.http.get(`${this.configService.api}user`, {
        headers: new HttpHeaders().set('Authorization', "Basic " + btoa(user.login + ":" + user.password)),
      }).toPromise().then(resp => {
        this.http.get(`${this.configService.api}projects`).toPromise();

身份验证工作正常。这是响应头:

HTTP/1.1 200
访问控制允许来源:http://localhost:4200
变化:起源
访问控制允许凭据:true
X-Content-Type-Options: nosniff
X-XSS-防护:1;模式=块
缓存控制:无缓存,无存储,最大年龄=0,必须重新验证
Pragma:无缓存
过期:0
X-Frame-选项:拒绝
设置 Cookie:JSESSIONID=5C698E29D0DD942ED36AF2D93287B03B;路径=/; HttpOnly
内容类型:application/json;charset=UTF-8
传输编码:分块
日期:格林威治标准时间 2017 年 8 月 16 日星期三 04:02:42

然后我尝试从 spring boot 中获取项目。这是我的 HTTP GET 的标头:

GET /user HTTP/1.1
主机:本地主机:8080
连接:保持活动
接受:应用程序/json、文本/纯文本、*/*
来源:http://localhost:4200
授权:基本 dXNlcjpwYXNzd29yZA==
用户代理:Mozilla/5.0 ...
DNT: 1
引用者:http://localhost:4200/auth
接受编码:gzip、deflate、br
接受语言:en-US,en;q=0.8,fr;q=0.6

它不使用会话 cookie,所以它会抛出一个错误,说没有识别。

如何使用 Angular 4.3 解决此问题?

【问题讨论】:

    标签: angular


    【解决方案1】:

    在 Angular 版本中 >= 4.3

    如果您在 Angular 4.3 中使用新的HttpClient 模块,您是否尝试在第二个(选项)参数中将withCredentials 设置为true

    constructor(private http: HttpClient) {
    
      this.http.get('/my/resource/url', {withCredentials: true})
        .subscribe(result => {
          ...
        });
    
    }
    

    来源:https://angular.io/api/common/http/HttpClient#get

    【讨论】:

    • 我相信你的意思是说withCredentials,而不是useCredentials
    猜你喜欢
    • 2017-05-22
    • 2018-02-28
    • 2018-05-26
    • 1970-01-01
    • 2014-05-27
    • 1970-01-01
    • 2023-04-03
    • 2018-09-25
    • 2017-02-25
    相关资源
    最近更新 更多