【问题标题】:Not able to read Set-Cookie response header无法读取 Set-Cookie 响应标头
【发布时间】:2020-03-17 06:48:15
【问题描述】:

这是我的 api 调用,我正在尝试从响应标头中读取 Set-Cookie

 return $http(config).then(function (response) {
      console.log(response.headers('Set-Cookie')); // undefined
      console.log($cookies.ovrcMfa); // undefined
    return response.data;
  });

响应头是:

Access-Control-Allow-Credentials: true 

Access-Control-Allow-Headers: Content-Type, Authorization, Set-Cookie, X-Requested-With, X-Session-Id, X-App-version, X-Target-Client, X-Origin-Domain, X-Dev-Mode

Access-Control-Allow-Methods: GET,PUT,POST,DELETE,OPTIONS

Access-Control-Allow-Origin: *

Access-Control-Expose-Headers: Set-Cookie

Set-Cookie : ovrc-mfa=IHfpt06ogxzLQFpwySE7vaJYg7whQ0sF; Max-Age=31536000; Path=/; Expires=Thu, 16 Jan 2020 09:30:47 GMT

这里我要读取 Set-Cookie 的值,即 ovrc-mfa

【问题讨论】:

  • console.log(response.headers) 的输出是什么?
  • 如果我做 console.log(response.headers('Set-Cookie')) 它是未定义的,如果 console.log(response.headers()) 它正在记录请求标头值和控制台。 log(response.headers('Set-Cookie')) 是记录头函数的代码
  • 你能显示确切的输出吗?你能做类似console.log(response.headers()['Set-Cookie'])的事情吗?
  • console.log(response.headers) 正在记录 ƒ (name) { if (!headersObj) headersObj = parseHeaders(headers); if (name) { var value = headersObj[lowercase(name)]; if (value === void 0) { value = null; } 返回 headersObj } 和 console.log(response.headers()['Set-Cookie']) 是未定义的
  • 您说console.log(response.headers()) 正在记录请求标头。你的意思是 response 标题吗?如果是这样,cookie 在其中吗?确切的控制台输出是什么?将其添加到您的问题中。您可能还应该尝试记录$cookies["ovrc-mfa"]

标签: javascript angularjs http cookies


【解决方案1】:

Set-Cookie 是一个forbidden response header name。您无法使用浏览器端 JavaScript 读取它。

如果您需要将该信息传递给您的 JavaScript,那么您需要让服务器使用一些其他机制(例如不同的标头或响应正文的一部分)。

【讨论】:

  • axios也一样吗?
  • @Andres 是的,它不依赖于库,因为它们都在幕后使用 JS ajax 调用。
猜你喜欢
  • 2014-02-26
  • 2015-02-10
  • 2012-09-30
  • 2011-06-07
  • 2023-03-11
  • 2018-11-14
  • 2021-10-21
  • 2017-05-25
  • 1970-01-01
相关资源
最近更新 更多