【问题标题】:Angular 2 not passing JSESSIONID on subsequent requestsAngular 2 未在后续请求中传递 JSESSIONID
【发布时间】:2019-04-13 06:19:53
【问题描述】:

使用 Angular 6.1.3。

登录请求在响应中发送 JSESSIONID cookie。但是,任何后续请求都不包括此 cookie。在搜索大多数提到的使用 withCredentials: true。但是我正在使用它,但仍然没有成功。在 Chrome 和 Firefox 上都试过了。

任何帮助将不胜感激。

有时存在另一个 cookie,withCredentials 导致包含该 cookie,但不包含 JSESSIONID。非常沮丧。

我还尝试手动访问 JSESSIONID 以自己包含它,即使这不是必需的。然而,即使“观察:'响应'”也不允许我看到 JSESSIONID cookie 的值。因此,如果我必须走这条路,请告知如何访问。

对发送的请求类型有任何限制吗?即使我尝试 GET 没有成功,当提供答案时,它是否适用于任何类型的后续请求(即 POST、PUT、PATCH)?

登录请求:

        const params: HttpParams = new HttpParams().set('token.name', username).append('token.value', password);
        const headers: HttpHeaders = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded');

        return this.httpClient
            .post<any>(this.loginUrl, params, { headers: headers, params: params,  withCredentials: true })
            .map(adjudicator  => {
				return adjudicator.adjudicator as Adjudicator;
			})
            .catch(this.errorHelperService.handleError);

Login Response

login Response Cookie tab

后续请求:

        // test request
        const headers: HttpHeaders = new HttpHeaders().set('Content-Type', 'application/json');

        return this.httpClient
            .get<any>(this.configService.getManagerUrl()+'1/bada8257-e7d9-45d3-a8a1-83a67f863260',  { headers: headers, withCredentials: true })
            .map(response  => {
                return response.match as Match;
            })
            .catch(this.errorHelperService.handleError);

Subsequent Test Request

【问题讨论】:

    标签: javascript angular http cookies jsessionid


    【解决方案1】:

    cookie 具有“安全”指令,而您尝试访问的站点不安全。

    安全 cookie 仅通过 HTTPS 协议通过加密请求发送到服务器。

    https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-13
      • 1970-01-01
      • 2019-01-27
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 2015-07-27
      • 2017-02-24
      相关资源
      最近更新 更多