webentwicklung-frage-antwort-db.com.de

Internet Explorer 11 setzt auf einer Site keine Cookies

Aus irgendeinem Grund erstellt IE11 (nur IE11, getestet mit anderen IE9 und IE10) keine Sitzung auf einer Site, an der ich gerade gearbeitet habe. Dies bedeutet, dass eine grundlegende Funktionalität wie das Anmelden bei einer Site nicht funktioniert.

In anderen Browsern funktioniert das einwandfrei.

Ich habe ein wenig recherchiert und herausgefunden, dass IE nicht mit Domains mit Unterstrich funktioniert .. aber meine Domain hat keine.

27
prototype

Der IE 11 mag keinen Domainwert im Cookie. Lass es leer.

Falsch für IE 11:

Set-Cookie: kohanasession=foobar; expires=Tue, 09-Apr-2016 01:01:01 GMT; path=/; domain=tc.mk; httponly

Richtig für IE 11:

Set-Cookie: kohanasession=foobar; expires=Tue, 09-Apr-2016 01:01:01 GMT; path=/; httponly
22
bebbo

Ich weiß, das ist alt, aber hoffentlich hilft dies jemandem in der Zukunft. Sie können in IE11 keinen leeren expires=; -Wert in einem Cookie haben. Sie müssen lediglich das Feld expires ganz auslassen.

6
Gurnzbot

Dies gilt möglicherweise nur für Cookies einer anderen Domain, aber wenn jemand dies über Google findet (wie ich es tat), kann dies helfen.

IE11 setzt möglicherweise keine Cookies, je nach den Datenschutzeinstellungen.

Das hat für mich funktioniert:

 enter image description here

(Internetoptionen -> Datenschutz -> Erweitert -> Alle Cookie-Fälle dort aktivieren)

3
Georgii Ivankin

Ich hatte dieses Problem vor kurzem selbst. In meinem Fall wurde das Problem dadurch verursacht, dass der Befehl "ClearAuthenticationCache" bei erfolgreicher Anmeldung ausgeführt wurde. Der Befehl wurde ausgeführt, um die HTTP-Authentifizierung zu entfernen, es stellt sich jedoch heraus, dass auch Session-Cookies entfernt werden.

Daher würde ich empfehlen, den Aufruf "ClearAuthenticationCache" zu entfernen, wenn Sie ihn nach einem Login ausführen.

document.execCommand("ClearAuthenticationCache");

Weitere Informationen finden Sie unter folgendem Link: https://blogs.msdn.Microsoft.com/ieinternals/2010/04/04/understanding-session-lifetime/

1
Karl Dahlgren

Sie setzen zweimal eines der Session-Cookies: Set-Cookie: PHPSESSID=3iv5l4tn2ugkbf4vt09lilsi06; path=/ Set-Cookie: identity=1468380643; expires=Mon, 09-Jan-2017 12:31:46 GMT; path=/; domain=.tc.mk; httponly Set-Cookie: kohanasession=u5rrhtaj731h3p9s44jhp0k612; expires=Tue, 09-Feb-2016 12:31:46 GMT; path=/; domain=tc.mk; HttpOnly Set-Cookie: kohanasession=u5rrhtaj731h3p9s44jhp0k612; expires=Tue, 09-Feb-2016 12:31:46 GMT; path=/; domain=tc.mk; httponly

Internet Explorer sendet diese Cookie-Informationen bei nachfolgenden Aufrufen nicht erneut, während beispielsweise Chrome eine der "Kohanasession" verwendet. Senden Sie die 'Kohanasession' nur einmal.

Die von Ihnen in dem Cookie gesetzte Domain lautet 'tc.mk', während Sie eine SEO-Weiterleitung auf www.tc.mk haben. Ich denke, IE wird das Cookie in diesem Fall nicht für das WWW verwenden. Versuchen Sie es auf www.tc.mk zu konfigurieren

0
S. Roose

Wie Martin Beeby vorschlug, überprüfen Sie bitte den Ablauf Ihres Cookies und stellen Sie die Uhrzeit korrekt auf Ihrem Server ein.

Ich habe die Sitzung für Ihre Site überprüft und in Chrome scheint sie abgelaufen zu sein.

 enter image description here

Es scheint ein Problem mit dem Erstellungs-/Ablaufdatum von Cookies zu geben und IE verhält sich anders als Chrome-basierte Browser. Verschiedene Cookies haben andere Zeiten als andere.

0
Pranav Singh

Wenn Sie sich die Cookies ansehen, die Ihr Server über das Ablaufdatum hinausschickt, scheint es gestern zu sein. Ist die Datumszeit auf Ihrem Server richtig eingestellt?

0
Martin Beeby

Ich hatte dieses Problem, weil ich eine einseitige Vue-Anwendung ausführte. Ich habe den Cookie auf eine Route gesetzt und dann sofort auf eine andere "Seite" weitergeleitet. Es scheint jedoch so, als würde IE keine Cookies senden, bis die nächste Seite geladen wird . Anstatt PushState zu verwenden, musste ich den Browser zwingen, die Seite erneut zu laden.

0
James Watkins

Ich bin auf ein ähnliches Problem mit einem anderen Setup gestoßen. Ich möchte mitteilen, was das Problem war und wie ich es gelöst habe. In der Hoffnung, dass es Lösungsvorschläge für die Leidenden geben würde.

Das Setup

  1. Authentifizierungsdienst, der Authentifizierungscookies setzt, die auf some-domain.com gespeichert sind
  2. Reagieren Sie mit der Anwendung, die von Webpack Server gebündelt und ausgeführt wurde, auf localhost
  3. Anfragen werden über den Webpack-Proxy an some-domain.com gesendet. Zum Beispiel
  '/api/': {
    target: 'some-domain.com',
    logLevel: 'debug',
    secure: false,
    changeOrigin: true,
    pathRewrite: {
    '^/api': '/api'
    }
  }

Das Problem # 1

Da mein Authentifizierungsdienst Cookies auf some-domain.com setzt und meine React App auf localhost lief, ist dies nicht der Fall Dieses Cookie wurde an seine Anforderungen angehängt, und mein Authentifizierungsablauf schlug fehl.

Lösung

Ich musste die Cookie-Domain umschreiben, deshalb habe ich diese Zeile der Proxy-Konfiguration auf dem Webpack hinzugefügt

    cookieDomainRewrite: {
      '.some-domain.com': 'localhost'
    }

in webpack.config.js sieht es so aus

  devServer: {
    ...
    proxy: {
      '/api/': {
        target: 'some-domain.com',
        logLevel: 'debug',
        secure: false,
        changeOrigin: true,
        pathRewrite: {
          '^/api': '/api'
        },
        cookieDomainRewrite: {
          '.some-domain.com': 'localhost'
        }
      }
    }
    ...
  }

Also das war in Ordnung für Chrom, Firefox ... aber eingebrochen in IE 11.

weil IE 11 die Domain nicht unterstützt localhost aus Gründen, die in früheren Beiträgen in diesem Thread erwähnt wurden, geht das Cookie verloren, wenn das Neuschreiben erfolgt.

Die letzte Änderung, die ich vornehmen musste, war

   cookieDomainRewrite: {
      '.some-domain.com': null
    }

Dadurch wird die Domain standardmäßig auf localhost gesetzt, während sie für IE 11 gültig bleibt.

Summe

wenn Sie mit Cookies und IE arbeiten, stellen Sie sicher, dass:

  1. die Domain Ihres Clients und Ihres Servers stimmt überein
  2. verwenden Sie null als Domänenwert, wenn Sie mit localhost arbeiten
0
Alex Yan