gpt4 book ai didi

node.js - 为什么 Nestjs 不在我的浏览器中设置 cookie?

转载 作者:行者123 更新时间:2023-12-05 05:48:15 25 4
gpt4 key购买 nike

我正在 Nestjs 中制作一个 API,供 ReactJs 中的应用程序使用。我的问题出在登录路由上,当我使用 swagger 时,cookie 会正常保存在浏览器中,但是当我从前端进行提取时,即使响应 header 中有 cookie,cookie 也不会保存。

我已经尝试使用所有 sameSite 选项,我尝试将凭据包含在提取中,但没有任何效果。如果我先登录到 swagger,然后我尝试在 react 中进行,react 复制 swagger 中保存的 cookie。

例如,如果我大摇大摆地使用用户 1 登录,并与用户 2 进行 react ,则 react 会从用户 1 窃取 cookie 并忽略用户 2 的响应 cookie。

react 中的代码:

    const res = await fetch(`${API_URL}/auth/login`, {
method: "POST",
headers: { "Content-type": "application/json", accept: "*/*" },
// credentials: "include",
body: JSON.stringify(data),
});

主要.ts:

    const corsOptions = {
origin:
process.env.NODE_ENV === 'development' ||
process.env.MY_NODE_ENV === 'development'
? [process.env.PLATFORM_LOCAL_URL, process.env.LANDING_LOCAL_URL]
: [process.env.PLATFORM_PROD_URL, process.env.LANDING_PROD_URL],
credentials: true,
allowedHeaders: 'Content-Type, Accept, Origin',
preflightContinue: false,
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
};

app.enableCors(corsOptions);
app.use(helmet());
app.use(cookieParser());

登录 Controller :

    @UseGuards(LocalAuthGuard)
@Post('auth/login')
async login(
@Body() _: MakeAuthDto,
@Request() req,
@Res({ passthrough: true }) res,
) {
const access_token = await this.authService.login(req.user);
const cookiesOpts = {
httpOnly: true,
secure: process.env.NODE_ENV === 'production',
sameSite: 'none',
path: '/',
maxAge: 60 * 60 * 24 * 3,
};
res.cookie('jwt', access_token, cookiesOpts);
return {
response: {
user: req.user,
expire: new Date().setDate(new Date().getDate() + 3),
},
};
}

大摇大摆的工作:

After call login route

从 ReactJs 发出请求后,响应 cookie 具有 jwt: response cookies, reactjs

但 cookie 没有存储:

cookie not stored

最佳答案

看起来您正在尝试使用 swagger 编辑器设置 cookie。

参见 Note for Swagger UI and Swagger Editor users :

Cookie authentication is currently not supported for "try it out" requests due to browser security restrictions. See this issue for more information. SwaggerHub does not have this limitation.

关于node.js - 为什么 Nestjs 不在我的浏览器中设置 cookie?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70843816/

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