我对 React 很陌生,我尝试将我的后端(Python/Flask)连接到我的前端(React)。我想使用 JWT 令牌并将它们保存在 HTTPOnly Cookie 中,我设法编写了一些代码来创建这些 cookie 并将它们放入客户端的 HTTPOnly Cookie 中,但我无法使用它们,我尝试访问 API 端点,但是我总是得到 "msg":"Missing Autorsation Header" 或 "msg":"Missing CSRF Token" 作为响应。谁能帮助我吗?如果您需要更多上下文,请私信我。
我尝试将令牌存储在 localStorage 中并手动将其添加到标头中,这有效,但我认为这不是很安全。
请注意,您可以使用JWT:s或会话ID,并且您可以在cookie或标头中发送它们。最常见的是在 cookie 中发送会话 id,并在标头中发送 JWT:s(我假设 mousetails 注释是基于此),但 JWT:s 也经常在 cookie 中发送,没有什么可以阻止您在标题。
在 HTTP-Only Cookie 中发送 JWT 通常是最安全的方式(从安全角度来看最稳健,更难以搞乱)。这将防止其他 JavaScript 读取 JWT(并窃取它),并且确保它不会发送到任何其他来源(可以从那里窃取它)。然而,这仅适用于浏览器,仅当您的 API 位于同一域时才有效(否则浏览器将不会发送 cookie),并且仅当您的客户端代码不依赖于 JWT 时才可能。 (客户端代码不应该对 JWT 有任何安全依赖性,因为客户端可以对其进行操作,但它可以根据 JWT 声明用户拥有的访问权限来调整 UI。)如果您在应用程序(而不是浏览器)中使用 JWT,标头通常是更好的选择。 (如何存储它
在 SO 上有描述)。
在浏览器检查器中,检查 cookie 标头是否已附加 JWT。并检查您的后端代码是否希望在 cookie(以及该 cookie 的名称)或标头(根据名为Authentication
的标准。)中接收 JWT。