使用 Angular 4.3 保存会话 cookie
Posted
技术标签:
【中文标题】使用 Angular 4.3 保存会话 cookie【英文标题】:Keeping session cookie with angular 4.3 【发布时间】:2018-01-24 02:16:59 【问题描述】:我正在尝试对 Spring Boot 后端进行身份验证并获取一些数据
this.http.get(`$this.configService.apiuser`, headers: new HttpHeaders().set('Authorization', "Basic " + btoa(user.login + ":" + user.password)), ).toPromise().then(resp => this.http.get(`$this.configService.apiprojects`).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 解决此问题?
【问题讨论】:
【参考方案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
。以上是关于使用 Angular 4.3 保存会话 cookie的主要内容,如果未能解决你的问题,请参考以下文章
Angular.js 的 Node.js CORS 会话 cookie
如何使用 Apache HttpClient 4.3 处理 Cookie