小编Alf*_*edo的帖子

Cookie 不存储在移动浏览器上,但在桌面上运行

我有一个在 heroku 上托管的 ExpressJS 应用程序和一个在 Netlify 上托管的前端 React 应用程序。当用户登录并且其详细信息正确时,他们将被重定向到显示与其相关的内容等的主页。当用户登陆主页(登录)时,将向后端发送调用以验证令牌当他们成功登录时提供给他们。有两个令牌:访问令牌和刷新令牌,出于安全目的,它们都作为 httponly cookie 发送。由于后端与前端位于不同的域中,因此我在 Express 后端上将凭据设置为 true,而在前端上我有 axios.defaults.withCredentials = true。

这在桌面浏览器上运行良好,并且 cookie 设置正确,等等。简而言之,用户可以看到为他们量身定制的内容,并且一切正常。在移动浏览器上,当我登录时,我可以在 Heroku 中看到,在桌面上成功登录后控制台登录到后端的令牌是未定义的。这让我相信移动浏览器上的 cookie 没有正确设置。我用复数形式表示移动浏览器,因为这种行为在 chrome mobile、safari 等上是一致的。

我在发送 cookie 和同一个网站等方面搞砸了,说实话,我不太擅长后端的东西。

这是登录页面中的代码,它将用户重定向到主页,该页面本身会根据用户是否登录而呈现登录版本或标准主页。请注意,signUserInOut 来自使用上下文,但下面是相关代码。

const navigate = useNavigate();

  const sendToLandingPage = () => {
    navigate("/");
  };

  const sendInformationToApi = async () => {
    const infoSent = await axios
      .post("https://BACKENDURLHEREREPLACED.COM", {
        email: `${usersEmail}`,
        password: `${usersPass}`,
      })
      .then((data) => {
        if (data.data.msg === "SIGN IN SUCCESSFUL") {
          sendToLandingPage();
          localStorage.setItem("USERISLOGGEDIN", true);
          signUserInOut(true);
        }
      }); …
Run Code Online (Sandbox Code Playgroud)

javascript cookies express reactjs axios

5
推荐指数
1
解决办法
2520
查看次数

标签 统计

axios ×1

cookies ×1

express ×1

javascript ×1

reactjs ×1