【问题标题】:Angular: Cookie is not createdAngular:未创建 Cookie
【发布时间】:2017-06-04 03:06:49
【问题描述】:

我正在使用标记 withCredentials = true 执行 /login POST 请求。并且响应是预期的,如果我使用 Chrome Dev Tools -> Network 检查,我可以看到一个名为 Set-Cookie 的响应标头,其中包含以下内容:

Set-Cookie:JSESSIONID=1944a870623c3499ea938df17a5g; Path=/; Secure; HttpOnly

但是……

cookie 没有在浏览器中创建 ???? (如果我也不刷新页面)。顺便说一句:在 Postman 中创建 cookie...

我正在通过 Angular v.2.4.2

处理请求

理论上cookie会自动创建,不是吗?顺便说一句,我无法访问 Set-Cookie 响应标头:

const options = new RequestOptions({ headers, withCredentials: true });
const body = `username=${username}&password=${password}`;

return this.http.post(`${host}${basePath}/login`, body, options)
  .do(r => {
    console.log(r.headers.get('Set-Cookie')); // Nothing… :( Only I can access to Content-Type header
  })
  .map(r => r.json())

我想这是正常的,如果理论上cookie会被自动创建,但没有被创建......

为什么没有创建 cookie?我该如何解决?

非常感谢! ???

【问题讨论】:

  • 你的cookie不是http-only吗?
  • 是的@MaciejSobala。理论上cookie会自动创建,对吧?为什么没有创建?
  • 我将问题编辑得更清楚

标签: javascript http angular cookies


【解决方案1】:

事实上,您不能通过 javascript 访问 cookie,并不意味着它没有被创建。

只有 Http 的 cookie 不能从 javascript 访问(这是针对 XSS 攻击的保护)

您的浏览器会在每个包含withCredentials: true 的请求中自动发送给定的cookie。

几天前我遇到了类似的问题。看这里:

Angular2 http post - how to send Authorization header?

Unable to exchange cookie between Spring and Angular2

更多关于 httponly cookie 和 XSS

https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies#Secure_and_HttpOnly_cookies https://www.owasp.org/index.php/HttpOnly

https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)

【讨论】:

  • 但如果我用Chrome -> Application -> Cookies 进行检查,则不会出现任何内容...这是正常的吗? :/ !
  • 是的。这是预期的行为。出于同样的原因。
  • 我已经编辑了我的答案,现在看看。如果您将我的答案标记为解决您的问题的答案和/或对我发送的解决方案给出一些观点,我真的很感激:)
  • 但是在/login之后,如果我做更多的请求,请求头是一样的!也许应该是 Set-Cookie 标头告诉服务器我已登录?如果我无法访问 cookie,如何放置此标头?哇!哈哈
  • Set-Cookie 是仅由服务器发送的标头。它通知浏览器创建具有给定值的 cookie。浏览器会将 cookie 附加到给定源/服务器的每个请求(仅 http cookie 除外)。如果你也想发送 http-only cookie,你需要使用withCredentials。请在这里查看我的答案:stackoverflow.com/questions/41568828/…
猜你喜欢
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
  • 2015-10-06
  • 1970-01-01
  • 2013-05-29
  • 2020-06-28
相关资源
最近更新 更多