如何在 React 应用程序中访问浏览器 cookie

IT技术 reactjs cookies
2021-05-14 19:43:59

这个问题有点流行,但我没有这样的运气。我主要是一个后端人员,所以我一边学习一边学习。

我有一个名为 cookieconnect.sid且值为12345. 我在我的 chrome 开发工具中看到了这一点。

在我的react程序,我的控制台登录document.cookielocalStorage.getItem('connect.sid')我得到空值。如何获取 的值12345

Passportjs使用护照github2战略,创建这个cookie。我需要访问它,以便我可以与我的 API 交谈。

谢谢

4个回答

使用react-cookie可能是获取 cookie 值的最简单方法。您可以运行npm install react-cookie,将安装 v2。如果你只想在客户端使用一个简单的 API,我会建议使用 v1.1 。只需运行npm install react-cookie@1.0.5,添加import cookie from 'react-cookie'到您的文件并用于cookie.load('connect.sid')获取 cookie 值。您可以查看v1README以了解详细信息。

如果仍然无法获取cookie值,请确认:

  1. /如果您希望您的 cookie 可在所有页面上访问,则cookie 被设置为正确的路径
  2. cookie 不是httpOnly cookie,HttpOnly cookie 不能通过 JavaScript 访问。

我知道这个答案并不完全是您想要的,但是如果您只想在服务器端授权某人,我有一个简单的解决方案。只需添加

凭据:'同源'

到您的 AJAX 请求。如果您这样做了,cookie 将与您的 connect.sid 一起发送到服务器,服务器将为您处理身份验证。

使用 react-cookie v2 的完整示例。

您需要将根组件以及要在 withCookies(..) 中访问 c​​ookie 的各个组件包装起来。饼干是props的一部分。

客户端.js:

import {CookiesProvider} from "react-cookie";

<CookiesProvider>
  <App />
</CookiesProvider>

应用程序.js:

import React from "react";
import {withCookies} from 'react-cookie';

class App extends React.Component {
  render() {
    const {cookies} = this.props;
    return <p>{cookies.get('mycookie')}</p>
  }
}

export default withCookies(App);

你可以npm install react-cookie从那时开始import { Cookies } from 'react-cookie',最后cookies.get('connect.sid')

不要忘记将您的根应用程序包裹在CookiesProvider如下内容中:

  <CookiesProvider>
    <App />
  </CookiesProvider>

你可以在这里找到一个例子