【发布时间】:2021-05-29 22:45:27
【问题描述】:
所以我真的不知道这是否是我刚刚遇到的问题,但我在其他一些问题上阅读了很多关于它的内容,但由于这些问题的答案对我没有帮助,我现在必须制作自己的 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。
然后我尝试将GET 更改为POST 请求。都没有用。
我尝试的最后一件事是自己设置 cookie 标头。这让我最惊讶:它只是在发送请求之前删除了我的 cookie 标头。它实际上只是发生在 cookie 标头上。我用'cookies'(cookie 和一个额外的s)尝试了它,它只是设置了标题。
还有几件事:
我可以执行,可能是我无法访问 cookie,因为我用 document.cookie 尝试过它并取回了正确的 cookie。
另外,我的设置(前端-后端)如下所示:
浏览器向 /home 发出 GET 请求 --> /home 通过 express 后端,因为它不包含 /api/* 它请求一个站点,我可以通过以下方式加载我的 react 应用程序的 prod 版本express.sendFile()
我真的不认为我的后端与它有关,但我认为最好也发布这个。
我希望有人可以帮助我解决这个问题。我在这个 cookie 问题上苦苦挣扎了 3 天,这让我发疯。我似乎也没有找到有同样问题的人,所以我想我是第一个遇到它的人。
无论如何...
提前感谢任何人可以给我的任何帮助或建议,祝你有美好的一天^-^
1.编辑:
还尝试了node-fetch package,它似乎也删除了cookie头
2.编辑:
我现在用 chrome 尝试了它,因为我正在用 firefox 测试它,然后看看这个:它有效。我会尝试找出为什么它在 chrome 中有效,但在 Firefox 中无效,如果我能解决这个问题,我会在这里写下来。
【问题讨论】:
-
设置
credentials: 'include'时会发生什么? -
什么都没有。 Cookie 也没有设置 ._.
-
所以请求通过了,但没有
Cookie标头?控制台中有任何警告吗? -
不,除了我从后端 bcs 获得的错误代码外,没有 cookie 可用于身份验证...
标签: javascript reactjs cookies fetch fetch-api