从响应标头角度获取 set-cookie 值

Posted

技术标签:

【中文标题】从响应标头角度获取 set-cookie 值【英文标题】:Get set-cookie value from the response header angular 【发布时间】:2021-10-21 23:26:37 【问题描述】:

我正在尝试从Response Headers 获取set-cookie

这样做的原因是 set-cookie 没有设置 cookie 并显示警告This attempt to set a cookie via a Set-Cookie header was blocked because its Domain attribute was invalid with regards to the current host url。附上截图

现在我想通过以下代码从 Response Header 中获取 set-cookie 值

但它总是为set-cookie返回null,但返回expires的值。

请任何人都可以指导如何解决此问题,或者如何从响应标头中获取 set-cookie 的值。

我们将不胜感激。

谢谢

【问题讨论】:

据此 (developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie) 声明如下:“浏览器阻止前端 javascript 代码访问 Set Cookie 标头,按照 Fetch 规范的要求,它将 Set-Cookie 定义为禁止响应- 必须从暴露给前端代码的任何响应中过滤掉的标头名称。" 【参考方案1】:

根据developer.mozilla.org set-cookie 是一个禁止的响应头名称。您无法使用浏览器端的 JavaScript 阅读它

根据 Fetch 规范的要求,浏览器阻止前端 JavaScript 代码访问 Set Cookie 标头,该规范将 Set-Cookie 定义为禁止的响应标头名称,必须从任何暴露给前端代码的响应中过滤掉。

【讨论】:

谢谢@VVS,请让我知道我该怎么做,因为这个set-cookie没有在浏览器中设置cookie,因为用户登录不起作用。这就是为什么我需要获取 cookie 或任何设置 cookie 的解决方案。 后端和前端的域是什么?如果它们不同,那么您可以尝试将它们放在同一个域中,看看是否有效。 目前在本地主机上。 那么你确认它们在两边是不同的,前端和后端的域不同吗?如果是这样,那么您将获得一个无效的 cookie 作为其不同的来源。 我可以在前端更改域吗?这样前端和后端的域是一样的。

以上是关于从响应标头角度获取 set-cookie 值的主要内容,如果未能解决你的问题,请参考以下文章

如何从角度 6 中的“响应标头”获取 JWT 令牌

如何以角度读取 Http 响应标头

从角度 4.3+ 中的 302(重定向)响应中检索标头

如何在角度和弹簧应用程序中隐藏访问令牌?

Wininet 是不是处理 HTTP 标头值“Set-Cookie”?

在 AWS Cloudfront 源请求中返回带有 set-cookie 标头的响应