gpt4 book ai didi

android - React native + Axios 不会跨请求保留 cookie

转载 作者:行者123 更新时间:2023-11-29 02:36:53 25 4
gpt4 key购买 nike

我有一个 React native 应用程序,它与我的笔记本电脑上运行的 Node 服务器通信(http://192.168.x.x:3000)。即使在执行成功登录后,对我的服务器的后续调用也会失败并显示 401 状态。我看到服务器上没有传递任何 cookie。

一些观察:

1) 当我将代码部署到实际服务器并在调用 API 时使用正确的域 ( http://example.com ) 时,我的 React Native 应用程序运行良好。

2) 使用 postman,我能够对自己进行身份验证,并随后成功地对我的本地服务器进行 API 调用。

这是一个非常奇怪的问题,我确信我遗漏了一些小问题,但现在已经坚持了很长一段时间。

关于可以做什么的任何提示/建议?

谢谢,

最佳答案

我知道这有点旧,但如果有人仍然面临问题,我发现以下步骤为我解决了问题

  1. 包括withCredentials来自 React 应用程序的所有请求
  2. 使用了 cors middleware服务器端。请务必指定 domain(在我的例子中,我的 VM 的 IP 地址和端口)并将 credentials 设置为 true
  3. 增加 maxAge 属性——我认为默认值大约是 10 秒,所以它一直看起来我的 session 没有持续,而实际上它只是过期得太快了。

第 2 步和第 3 步的示例可能类似于:

const express = require('express');
const path = require('path');
const session = require('express-session');
const cors = require('cors')

const app = express();

// STEP 2
app.use(cors({
credentials: true,
origin: '192.168.0.100:3000',
methods:['GET', 'POST', 'PUT', 'DELETE']
}));

// STEP 3
app.use(session({
cookie: {
maxAge: 86400000 // one day
}
}));

编辑:另外值得一提的是,如果您在虚拟机(像我)上运行服务器,请确保虚拟机的日期与运行您的 React 应用程序的设备的日期一致。我发现这也表现为 Axios 似乎丢失 session 的艰难方式。

关于android - React native + Axios 不会跨请求保留 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46502537/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com