首页 > 解决方案 > Fetch API 根本不适用于反应中的 cookie

问题描述

所以我真的不知道这是否是我刚刚遇到的问题,但我在其他一些问题上阅读了很多关于它的内容,但由于这些问题的答案对我没有帮助,我现在必须制作自己的 StackOverflow 帖子._ .

我会尽量保持简短。


所以我试图向我的后端发出一个简单的获取请求,但包括来自浏览器的当前 cookie。它看起来像这样:

var rsp = await fetch("/api/basicRegistrationInfos", {
  method: "POST",
  credentials: "same-origin",
  headers: new Headers({ Cookie: document.cookie }),
});

这不是我的原始代码。
原始代码刚刚包含var rsp = await fetch("/api/basicRegistrationInfos");.
我修改了它,因为 cookie 标头根本不起作用。
我尝试设置选项的每个值,credentials但这并没有发送任何 cookie。
然后我尝试将其更改GETPOST请求。也没有用。
我尝试的最后一件事是自己设置 cookie 标头。这让我最惊讶:它只是在发送请求之前删除了我的 cookie 标头。它实际上只是发生在 cookie 标头上。我用'cookies'(cookie带有附加s)尝试了它,它只是设置了标题。


还有几件事:
我可以执行它可能是我无法访问 cookie,因为我尝试过document.cookie并拿回了正确的饼干。
此外,我的设置(前端 - 后端)如下所示:

/home浏览器向-->发出 GET 请求,/home通过 express 后端,因为它不包括/api/*它请求一个站点,我可以加载我的 react 应用程序的 prod 版本,我express.sendFile()

真的不认为我的后端有事可做有了它,但我认为最好也发布这个。

我希望有人可以帮助我解决这个问题。我在这个 cookie 问题上苦苦挣扎了 3 天,这让我发疯。我似乎也没有找到有同样问题的人,所以我想我是第一个遇到它的人。

无论如何...
提前感谢任何人可以给我的任何帮助或建议,祝您有美好的一天^-^

1. 编辑:
也用node-fetch 包尝试过,它似乎也删除了 cookie 头

2. 编辑:
我现在用 chrome 尝试了它,因为我正在用 Firefox 测试这个东西,看看这个:它有效。我将尝试找出为什么它在 chrome 中有效但在 Firefox 中无效,如果我能解决这个问题,我会在这里写下来。

标签: javascriptreactjscookiesfetchfetch-api

解决方案


由于浏览器插件,它似乎无法正常工作。在禁用附加组件模式下启动 firefox 为我解决了这个问题(可以在右上角的汉堡菜单下找到 -> 帮助 -> 在禁用附加组件的情况下重新启动 firefox)


推荐阅读