发送带有获取请求的Cookie

时间:2019-09-24 05:20:54

标签: javascript cookies axios

我正在通过站点https://a.com进行身份验证。身份验证后,我将访问http://b.com。当我从b.com向a.com发出获取请求时,a.com会为我需要发送的会话设置cookie。

您能告诉我如何获取Cookie并将其传递给我的请求。

我尝试使用“ withCredentials”发送请求:是的, 还尝试将axios-cookiejar-support与hard-cookie一起使用。但似乎不起作用。

    .get(a.com/path-requiring-cookie, {
      withCredentials: true,
      headers: {
        'Content-Type': 'application/json',
        'access-control-allow-credentials': true,
      },
    })
    .then(res => {
      console.log(res.data);
    });```

This is the code that I have to send the request.

But this doesn't seem to send the cookie with the request.  Can someone please clarify.

2 个答案:

答案 0 :(得分:1)

为什么不使用javascript函数来帮助使用基于以下名称的Cookie来获取Cookie

function GetCookie(cName) {
  const name = `${cName}=`;
  const decodedCookie = decodeURIComponent(document.cookie);
  const ca = decodedCookie.split(';');
  for (let i = 0; i < ca.length; i++) {
    let c = ca[i];
    while (c.charAt(0) === ' ') {
      c = c.substring(1);
    }
    if (c.indexOf(name) === 0) {
      return c.substring(name.length, c.length);
    }
  }
  return '';
};

console.log(GetCookie("SID"))

答案 1 :(得分:0)

看看this question

您要解决的问题是从/向不同域读取/发送Cookie。

如先前链接的问题所述,一种解决方案是在http://b.com上设置一些标头

Access-Control-Allow-Origin: http://b.com
Access-Control-Allow-Credentials: true

您在域为http://b.com的服务器上执行此操作

遵循这些原则可以为您解决问题。