微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript fetch 不接受 Set-Cookie 标头

如何解决javascript fetch 不接受 Set-Cookie 标头

我已经尝试了几天来从我用 Go 编写的网络服务器设置一个 cookie,一切看起来都正确,但它就是行不通。

我的 Set-Cookie 标头:

Set-Cookie: session_token=token; Path=/; Expires=Date; Max-Age=120000; HttpOnly; SameSite=Strict

我尝试编辑所有值并删除添加其他字段,但没有任何帮助。如果我将请求设置为直接获取并导航到带有浏览器 cookie 的链接,并且在 Postman 中它就在那里,但是当我尝试使用 fetch 获取 http 请求时,它不起作用。 我知道 credentials: "same-origin"credentials: "include" 但它们不起作用。 这是我的 js 获取代码

const log_in = (e) => {

 // data entry validation and stuff

 const url = "/signin";
  fetch(ip + url,{
    credentials: "same-origin",method: "POST",headers: {
      "Content-Type": "application/json",},body: JSON.stringify({
      username: document.getElementById("username").value,password: document.getElementById("password").value,}),}).then(
      () => console.log("recieved")
  );
};

解决方法

这根本不是我想要的,但如果有人和我在同一条船上,这就是我解决问题的方式......使用 axios。 我不使用节点、纱线或其他任何东西,并且使用 cdn 给了我 cors 错误,所以我只是从本地的 cdn 文件中复制了代码并且有效。 您可以在此处查看代码:

axios({
      method: 'post',url: ip + url,data: {
        firstName: document.getElementById("username").value,lastName: document.getElementById("password").value
      },withCredentials: true
    })

我不会将其标记为答案,因为我想使用 fetch 而不是 3rd 方库来执行此操作,但如果这是某人的最后手段,这可行...

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。