Ich habe einige Probleme mit dem Cookie für eine SessionID zurückgegeben von Express an den Browser. Bei aufeinander folgenden Anfragen wird das empfangene Cookie nicht zurückgegeben und generiert somit für jede Anfrage eine neue Sitzung. Der Login-Status kann nicht gepflegt werden.NodeJS & Express-Cookie-Problem mit IE
Dieses Problem scheint nur auf IE11 und darunter auf einem Betriebssystem niedriger als Win10 oder so auftreten (zB: IE11 auf Win7). Edge, Chrome, Safari, FF ... keine Probleme.
Einige weitere Kontext: Wir haben zwei Anwendungen, sagen one.example.com und two.example.com. Bei Anfragen von beiden Anwendungen sollte der angemeldete Benutzer im Auge behalten werden. Der MEAN-Stack, der auf two.example.com zugreifbar ist, gibt Set-Cookie-Header für einen Tag, nur HTTP, mit einer Domain von '.example.com' auf Pfad '/' zurück.
Wenn ich eine Seite mit sage, 10 Ressourcen laden, erhalten alle diese Anfragen ein neues Cookie für die SessionID. Auch bei aufeinanderfolgenden Seitenladungen. Der Cookie wird niemals an den Server zurückgegeben.
HTTP Spur von Chrome:
GET http://localhost:3000/
HTTP/1.1 200 OK
set-cookie: test=123
set-cookie: webSessionId=s%3Av6R-...
GET http://localhost:3000/lib/bootstrap/dist/css/bootstrap.css
Cookie: test=123; webSessionId=s%3Av6R-...
HTTP/1.1 200 OK
Set-Cookie: test=123
gesehen Chrome gibt die Session, es nicht durch Eil für die zweite Anforderung zurückgegeben wird
HTTP Spur von IE: Antwort für die erste angeforderte Ressource Anfrage für die zweite Ressource Antwort für die zweite angeforderte Ressource
Die test123 ist ein hartkodierte Cookie ich auf jede Anfrage gesetzt ... (unabhängig davon, ob es zurückgegeben wurde) durch res.setHeader('Set-Cookie', 'test=123');
verwenden. An einem Punkt habe ich den Unterschied zwischen einem 'Set-Cookie' und 'Set-Cookie' gesehen (wie in den obigen Screenshots zu sehen ist), aber das scheint IE nicht zu beeinflussen.
So begann ich mit den anderen Cookie-Eigenschaften (Ablaufdatum, Domäne, Pfad, sichere & HTTP nur) zu spielen, sobald ich eine Domain zur Verfügung stellen ... der Test-Cookie wird nicht von IE zurückgegeben. In unserem Setup ist ".example.com" wirklich eine Voraussetzung. Die Domäne enthält keinen Unterstrich (_). In dev & tst enthält es einen Bindestrich "two-dev.example.com". Aber das IE (11) Problem existiert auch auf prd (two.example.com).
Hat jemand eine Idee, warum IE Cookies mit einer Domain zurückweist? Dieser sh * t fährt mich Bananen
mit: Express 4.13.1; Express-Sitzung 1.11.3; cookie-parser 1.3.2