3 Stimmen

Das Erstellen eines Cookies schlägt bei Safari, Chrome und IE fehl, funktioniert aber bei FF

Wir verwenden den folgenden Code, um das Sicherheits-Cookie zu erstellen. Alles funktioniert gut in Staging-Umgebung, aber in der Produktionsumgebung der folgende Code ist nicht in der Lage, ein Cookie in Safari, Chrome oder IE zu erstellen, aber es tut ein Cookie erfolgreich in Firefox erstellen. irgendetwas, dass Sie Jungs denken, ich bin fehlt oder ist falsch in hier?

public static void SetAuthenticationCookie(CustomIdentity identity)
        {
            ConfigSettings configSettings = ConfigHelper.GetConfigSettings();

            string cookieName = configSettings.CookieName;
            if (cookieName == null || cookieName.Trim() == String.Empty)
            {
                throw new Exception("CookieName entry not found in Web.config");
            }

            string cookieExpr = configSettings.CookieExpiration.ToString();

            string encryptedUserDetails = Encrypt(identity);

            HttpCookie userCookie = new HttpCookie(cookieName.ToUpper());
            if (cookieExpr != null && cookieExpr.Trim() != String.Empty)
            {
                userCookie.Expires = DateTime.Now.AddMinutes(int.Parse(cookieExpr));
            }
            userCookie.Values["UserDetails"] = encryptedUserDetails;
            userCookie.Values["Culture"] = configSettings.Customer.Culture;

            MyContext.Current.Response.Cookies.Add(userCookie);
        }

7voto

Philippe Leybaert Punkte 161931

Safari und IE8 akzeptieren standardmäßig keine Cookies von Dritten.

Wenn Sie eine andere Domain mit JSONP aufrufen, wird jedes von diesem Skript gesetzte Cookie von Safari und IE8 blockiert. Dagegen können Sie nichts tun (im IE8 könnten Sie eine P3P-Richtlinie hinzufügen, aber das funktioniert in Safari nicht).

Es gibt Workarounds für die Aufrechterhaltung des Status über JSONP-Aufrufe, aber es ist ziemlich kompliziert (Sie müssen den Status manuell verwalten und verwenden document.cookie in der aufgerufenen Javascript)

Alternativ können Sie Ihre Nutzer auffordern, die Datenschutzeinstellungen in ihrem Browser zu verringern, aber das ist IMHO nicht der Rede wert.

0voto

nonopolarity Punkte 138211

Haben Sie überprüft, ob Sie das Add-on Web Developer verwenden und die Cookies deaktiviert haben oder ob die Cookies in FF deaktiviert sind?

0voto

Ich habe gesehen, dass dieses Problem damit zusammenhängt, dass der Server das falsche UTC-Datum/die falsche Uhrzeit hat. Firefox akzeptiert die Cookies unabhängig vom Datum und der Uhrzeit des Servers, aber andere Browser setzen das Cookie nicht, wenn das Datum und die Uhrzeit außerhalb einer bestimmten Fehlerspanne liegen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X