Cookie 未通过跨源发送,本地一切正常

问题描述 投票:0回答:1

我有一个 Angular 应用程序作为前端,有一个 NestJS 应用程序作为我的 API。我使用 Supabase 和 @supabase/ssr 来处理身份验证流程。身份验证流程如下:

我通过 @supabase/ssr 提供的

createBrowserClient
让用户登录。成功验证后,它会自动设置 cookie。之后,我像往常一样进行 API 调用。

在本地主机上,这工作正常,正在发送授权标头和 Cookie 标头,如下所示:

localhost headers

现在,当我尝试通过 CloudFlare 隧道对后端进行跨域请求时,Cookie 不再被发送,如下所示:

remote headers

这是饼干。 cookie

正如您在此处看到的,它是“安全”的,并且 SameSite 设置为“无”。我读过很多帖子和论坛,每个人都建议这会有所帮助。这对我没有帮助。另外,在我的 NestJS 应用程序上,我已经设置了

app.use('trust proxy', 1)
。也没有帮助。

接下来我可以尝试什么?

angular express cookies https nestjs
1个回答
0
投票

是的,我也面临这个问题

当我通过一些隧道向公众公开本地主机时,就会出现此问题。我通过 Node JS 使用后端应用程序前端和后端服务器。前端服务器工作正常。但在后端服务器上创建的 cookie 未通过公共隧道正确接收。这是因为隧道仅正确暴露前端。出现此问题的原因是托管后端服务器在同一系统上。这不是正确的来源错误。这是隧道问题。没有办法在本地主机之外发布cookie,即cookie中的cookie。如果能做到的话,也许是有可能的。在我的系统中,cookies被重复地存储在本地主机上。因为 cookie 没有通过隧道传输,并且系统正在作为本地主机体验 cookie。

res.cookie("token", token, {
  httpOnly: true,  // Prevents JavaScript access
  secure: true,    // Ensures cookies are sent over HTTPS
  sameSite: "None",// Required for cross-origin requests
  domain: ".example.com", // Replace with your domain (e.g., example.com)
});

这里我尝试使用两个隧道。一个用于后端,另一个用于前端,但无法正常工作。这是一个 .example.com 用作子域,它的目标是或位于主域流,但尽管如此,它不会将令牌发送到本地主机以外的任何地方。这意味着无法通过令牌传递隧道。它仅存储在本地主机上。这是一个大问题。如果有人有答案,请帮忙。

问题

如何通过隧道将cookie跨域传递到公共URL

使用 cloudflear 隧道的 React js 中出现跨源错误,并且我的服务器托管在本地主机端口 4000 中,我的 React 应用程序主机位于

cloudflared tunnel --url http://localhost:4000

记住代理是 localhost:4000 这只是本地主机后端服务器。前端服务器是通过云公平隧道创建的,后端服务器正在直接使用。但是即使一切正常,当接收cookie时,它接收的是本地主机令牌。我需要在我的 Cloud Fair 公共域中生成令牌。此外,使用任何其他介质都会显示跨源错误。

© www.soinside.com 2019 - 2024. All rights reserved.