Heim  >  Fragen und Antworten  >  Hauptteil

Das Express-Backend hat Probleme beim Empfang von Subdomain-Cookies mit CORS und Cookie-Parser

<p>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. </p> <p>Hier ist eine Zusammenfassung der Schritte, die ich unternommen habe, und der Probleme, mit denen ich konfrontiert war: </p> <p><strong>Cookie setzen, wenn Sie angemeldet sind: </strong></p> <pre class="brush:php;toolbar:false;">res.cookie("token", token, { httpOnly: wahr, sameSite: „none“, Weg: "/", sicher: wahr, });</pre> <p>Wenn ich versuche, dieses Cookie mithilfe der CORS-Einstellungen abzurufen, wobei der Ursprung lautet: </p> <pre class="brush:php;toolbar:false;">app.use( cors({ Herkunft: „http://localhost:3000“, Referenzen: wahr, }) );</pre> <p>Aber wenn ich beim Testen den Subdomain-Ursprung verwende, so: </p> <pre class="brush:php;toolbar:false;">app.use( cors({ Herkunft: „http://binbros.localhost:3000“, Referenzen: wahr, }) );</pre> <p>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. </p> <p><code>console.log(req.cookies);</code></p> <p>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>
P粉665427988P粉665427988454 Tage vor480

Antworte allen(1)Ich werde antworten

  • P粉244730625

    P粉2447306252023-08-15 09:07:40

    在像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

    Antwort
    0
  • StornierenAntwort