Frage

Ist es sicher, einen solchen Code zu benutzen?

Response.Cookies[cookieName].Path = Request.ApplicationPath + "/";

Ich möchte über alle Eckfällen wissen, bitte ...

War es hilfreich?

Lösung

Kurz gesagt, nein, es ist nicht sicher. Cookie Pfade zu verwenden ist mit Problemen behaftet, da sie Groß- und Kleinschreibung in IE und Chrome sind, aber nicht FF. Gemeint ist jeder Mismatch in Pfad Fall wird die Dinge Zeug.

  1. Wenn ein Cookie zu erzeugen, wenn der Pfad, der Sie festgelegt, unterscheidet mich bei dem, was der Benutzer eingegeben, Browser wird es nicht gespeichert werden.

  2. Wenn der Benutzer zurückkehrt, wenn der Pfad sie unterscheidet sich in dem Fall von der ersten Reise eingeben, wird nicht der Browser das Cookie mit der Anforderung liefern.

Was Problem versuchen Sie zu lösen?

Andere Tipps

Wenn Ihre Anwendung läuft in der Wurzel einer Domäne, Request.ApplicationPath == "/". Daher mit Ihrem Code, wird der Pfad des Cookies // sein. Sie können, um dieses Problem ausweichen, indem Sie diese:

cookie.Path = Request.ApplicationPath;
if (cookie.Path.Length > 1) cookie.Path += '/';

Wie Wird betont zu Recht, , wollen Sie sicherstellen, dass Ihre Anwendung ein einheitliches Gehäuse von URLs erzwingt (dh Redirect alle Anfragen mit URLs Großbuchstaben in ihre entsprechenden Kleinbuchstaben enthält).

Other than that, ich glaube, Sie fein dies zu tun sein sollten. Wenn Sie alle Ihre Cookies sein wollen „Anwendung scoped“, warum das Erstellen eines benutzerdefinierten IHttpModule mit Code wie folgt (oder erweitern global.asax.cs):

private void Application_EndRequest(object sender, EventArgs e)
{
    var app = (HttpApplication)sender;

    var cookiePath = app.Request.ApplicationPath;
    if (cookiePath.Length > 1) cookiePath += '/';

    foreach (string name in app.Response.Cookies.AllKeys)
    {
        var cookie = app.Response.Cookies[name];
        cookie.Path = cookiePath;
    }
}

Nein, es ist nicht sicher, aus den Gründen, dass Will angegeben.

Aber ... können Sie wollen, diese Technik verwenden erfüllen Ihre Absicht.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top