Es gibt einen Header Max-Age, mit dem die Ablaufzeit eines Cookies festgelegt werden kann. Leider unterstützen Internet Explorer 6, 7, 8 und wahrscheinlich später Max-Age nicht und erfordern einen Expires-Header mit einem absoluten Datum in GMT.
Es ist nicht ungewöhnlich, dass GMT-Zeit und TZ-Einstellungen auf einem bestimmten Client nicht korrekt sind. Berücksichtigen Sie den Benutzer, der seine Zeitzone nicht korrekt definiert hat, und passen Sie die Uhr manuell an.
Darüber hinaus kann es manchmal zu einer signifikanten Taktverschiebung von vielen Minuten kommen, die der Benutzer nicht bemerkt.
In diesem Fall kann die GMT-Zeit um mehrere Stunden verschoben werden. Effektiv würde es verhindern, dass ein Server irgendeinen Cookie setzt, der eine kurze Ablaufzeit benötigt. Stellen Sie sich vor, ein Cookie mit einem maximalen Alter von 10 Minuten würde niemals gesetzt werden, wenn TZ falsch ist.
Ursprüngliche Ideen zur Lösung des Problems (die nicht funktionieren oder problematisch sind):
- Natürlich ist das Beste, Max-Age zu verwenden oder beides zu spezifizieren, da alle Browser den "Expire" -Teil ignorieren würden - aber es funktioniert nicht in IE
- Eine andere Art, an die ich dachte, ist Date: header zu setzen, hoffentlich würde der IE den Unterschied berechnen, um den Clock Skew zu umgehen ... Aber IE hilft nicht.
- Holen Sie sich die Zeit vom Client auf die Anfrage (mit JavaScript) und dann berechnen Sie die Uhr Differenz und dann anpassen Expire-Header nach Bedarf. Es erfordert jedoch komplexe Datenmanipulation einschließlich einiger Möglichkeiten, die Zeit an den Server zu übermitteln.
Fragen:
- Was ist die beste und gebräuchlichste Vorgehensweise um die Expire-Zeit für Cookies in IE zu bewältigen?
- Wie machen Sie das in Ihren Anwendungen?