Das Express-Backend hat Probleme beim Empfang von Subdomain-Cookies mit CORS und Cookie-Parser
P粉665427988
P粉665427988 2023-08-14 21:31:57
0
1
387

Ich entwickle derzeit eine MERN-Anwendung (MongoDB, Express, React, Node.js) und habe ein Problem beim Empfang von Cookies von einer Subdomain im Express-Backend. Ich habe CORS und die Cookie-Verwaltung eingerichtet und alles funktioniert gut, wenn ich einen einfachen Localhost-Ursprung verwende, habe aber Probleme beim Umgang mit Subdomains.

Hier ist eine Zusammenfassung der Schritte, die ich unternommen habe, und der Probleme, mit denen ich konfrontiert war:

Cookie setzen, wenn Sie angemeldet sind:

res.cookie("token", token, { httpOnly: wahr, sameSite: „none“, Weg: "/", sicher: wahr, });

Wenn ich versuche, dieses Cookie mithilfe der CORS-Einstellungen abzurufen, wobei der Ursprung lautet:

app.use( cors({ Herkunft: „http://localhost:3000“, Referenzen: wahr, }) );

Aber wenn ich beim Testen den Subdomain-Ursprung verwende, so:

app.use( cors({ Herkunft: „http://binbros.localhost:3000“, Referenzen: wahr, }) );

Es gibt keine Fehler mit CORS im Frontend und das Cookie wurde erfolgreich im Frontend erstellt. Wenn ich jedoch versuche, über diese CORS-Einstellung auf die Cookies zuzugreifen, erhalte ich keine Cookies. Aber mit der gleichen Methode und dem gleichen CORS-Setup für einen einfachen Localhost kann ich alle Cookies normal und ohne Probleme abrufen.

console.log(req.cookies);

P.S: Wenn ich auf localhost bin und origin localhost ist, und ich protokolliere das Cookie, Ich kann alle Frontend-Cookies abrufen, nicht nur das, das ich im Backend erstellt habe Aber Wenn ich mich in der Ursprungsdomäne der Subdomain befinde, erhalte ich nicht einmal ein Cookie im Backend. Keines von mir erstellt, noch eines aus dem Frontend

P粉665427988
P粉665427988

Antworte allen (1)
P粉244730625

在像subdomain.localhost这样的开发环境中使用子域名时,由于浏览器安全策略的限制,可能会遇到额外的挑战。浏览器通常将不同的子域名视为独立的来源,这可能会影响到cookie和CORS的行为。

在开发环境中,secure属性最好设置为false

res.cookie("token", token, { httpOnly: true, sameSite: "none", path: "/", secure: false, });

检查你的系统hosts文件:

127.0.0.1 binbros.localhost

在前端检查是否从binbros.localhost域名调用API,并检查Access-Control-Allow-Credentials

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Credentials

    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!