it-swarm.com.de

Chrome localhost Cookie wurde nicht gesetzt

Ich habe eine ASP.net-Anwendung, die ein Cookie verwendet, um die vom Benutzer ausgewählte Sprache zu speichern. Alles funktioniert einwandfrei, außer wenn ich mich auf localhost befinde. Wenn Localhost durch 127.0.0.1 ersetzt wird, funktioniert es wieder ... warum?

Ich habe beabsichtigte Einschränkungen für file: // gesehen, aber ich kann tatsächlich keinen Hinweis auf die beabsichtigte Beschränkung auf localhost finden.

Was ich nicht wirklich verstehen kann, ist, warum die ASP.net-Sitzung (ASP.NET_SessionId) und die ASP.net-Formularauthentifizierungscookies (.FSAUTHSSO) für die localhost-Domäne richtig festgelegt sind. Meine Cookies sind jedoch nicht ... warum ?!

Ich habe schon viel gegoogelt und nichts funktioniert:

  • Chrome-Befehlszeilenflag festlegen --enable-file-cookies [DOES NOTWORK]
  • Setzen Sie den Cookie auf "HttpOnly".
  • Ablauf in Sitzung oder Datum ändern ... [MASST NICHT AN]
  • Ändern des Cookie-Pfads in Root (/) oder in irgendetwas anderes

Was ist also wichtig? :)

Und warum können die ASP.net-Cookies gesetzt werden und meine nicht? Was ist der Unterschied?

Letztes, um nur zu erwähnen, dass dies auch bei IE der Fall ist, funktioniert aber gut bei FF.

Vielen Dank!

Alex

43
AlexCode

Cookies sind für die zweite Ebene und für das Herunterfahren gedacht. First-Level-Domains funktionieren nicht. Verwenden Sie stattdessen die Adresse http://127.0.0.1 (wie Sie bereits erwähnt haben), oder Sie können Ihre Hosts-Datei bearbeiten, um der Adresse 127.0.0.1 eine andere URL mit einer TLD zuzuordnen. 

yoursite.tld   127.0.0.1

Recherchierte das nur weiter; fand diese Antwort: Cookies auf localhost mit expliziter Domain

29
krslynx

versuchen Sie bitte, cookie.Domain = null auf localhost zu setzen und den Domänennamen andernfalls zu verwenden.

19
Ehab

Gute Nachrichten. Das Setzen von Cookies auf localhost ist jetzt möglich, wenn Chrome Canary Build startet: https://code.google.com/p/chromium/issues/detail?id=551906

5
agektmr

Ich weiß, dass das vielleicht dumm ist, aber es ist mir passiert, dass ich eine asp.net-mvc-Anwendung übernommen habe, bei der ich sie nicht lokal arbeiten konnte. Schließlich wies ein anderer Entwickler auf einen Eintrag in der web.config hin, der kürzlich hinzugefügt wurde.

<httpCookies httpOnlyCookies="true" requireSSL="true" />

Setzen Sie die RequireSSL lokal auf "false". Denken Sie daran, die Transformationen in den Umgebungen anzuwenden. Ich hoffe das hilft. 

1
user906573

Ich hatte ein Problem mit Chrome, bei dem ein Cookie mit einem Ablauf von 2 Wochen in der Zukunft nicht festgelegt wurde. Dies war der Auth-Cookie (.AspNet.ApplicationCookie), sodass ich ständig zur Anmeldeseite zurückgeleitet wurde. Dieses Problem trat bei anderen Browsern, die ich ausprobierte, nicht auf.

Am Ende experimentierte ich mit benutzerdefinierten Cookies, um festzustellen, dass Chrome der Meinung war, dass das aktuelle Datum früher als es tatsächlich war -. Also habe ich zum Beispiel einen Cookie eingesetzt, der in 1 Jahr abgelaufen ist (2. April 2017) und eigentlich Chrom Setzen Sie diesen Cookie auf den 1. Januar 2017! Dies würde dann erklären, warum ein Cookie mit einem Verfallsdatum von 2 Wochen bereits als abgelaufen betrachtet wurde, da Chrome 3 Millionen des tatsächlichen Verfalls abhob und daher als abgelaufen galt.

Chrome-Neustart hat das Problem nicht behoben - Ich habe den PC in dieser Phase neu gestartet und den Fehler "behoben". Ich sollte auch beachten, dass dies nur für localhost vorkam - anscheinend war jede andere Seite in Ordnung. 

1
wal

Ich hatte gerade das gleiche Problem in Chrome. Ich hatte cookie.Secure = true. Das für localhost zu beseitigen, hat das Problem für mich behoben. 

(Hatte genau das gleiche Problem, FWIW: arbeitete in FF, nicht in IE oder Chrome)

1
Clever Human

Für meine Situation habe ich eine asp.net-basierte Rasierer-Seiten-App mit iisexpress (localhost: ####) ausgeführt und bin mit Chrome auf dieses Problem gestoßen. Mein Fix war, um sicherzustellen, dass iisSettings in Properties\launchSettings.json eine andere Nummer als 0 für sslPort (44344) hat. Wenn der sslPort auf 0 gesetzt ist, wird iisexpress nicht ausgeführt. Wenn Sie die Einstellung ändern, wird die App mit ssl in iisexpress ausgeführt. Wenn Sie die Projekteigenschaften in Visual Studio und die Registerkarte "Debuggen" auf "SSL aktivieren" setzen, wird diese Änderung beispielsweise auch in "launchsettings.json" vorgenommen

"iisSettings": {
  "windowsAuthentication": false,
  "anonymousAuthentication": true,
  "iisExpress": {
    "applicationUrl": "http://localhost:29025/",
    "sslPort": 44344
  }
},
1
Patrick Neborg

Es gibt ein Problem auf Chromium seit 2011 . Wenn Sie die Domäne explizit als 'localhost' festlegen, sollten Sie sie als false festlegen, damit sie funktioniert oder die Domäne als 127.0.0.1 festlegen.

0
Bruno Peres