Question

Est-il sûr d'utiliser ce code?

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

Je veux savoir sur tous les cas de coin, s'il vous plaît ...

Était-ce utile?

La solution

En bref, non, ce n'est pas sûr. Utilisation de chemins cookie est source de nombreux problèmes car ils sont sensibles à la casse dans IE et Chrome, mais pas FF. Cela signifie que tout décalage dans le cas de chemin va bourrer les choses.

  1. Lors de la génération d'un cookie, si le chemin que vous définissez diffère dans le cas de ce que l'utilisateur a tapé, les navigateurs ne seront pas stocker.

  2. Lorsque l'utilisateur retourne, si le chemin qu'ils entrent diffère dans le cas du premier voyage, le navigateur ne fournira pas le cookie à la demande.

Quel est le problème que vous essayez de résoudre?

Autres conseils

Si votre application est exécutée dans la racine d'un domaine, Request.ApplicationPath == "/". Par conséquent, avec votre code, le chemin de votre cookie sera //. Vous pouvez esquiver contourner ce problème en faisant ceci:

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

Est-ce que souligne à juste titre , vous voulez vous assurer que votre application applique un boîtier cohérent d'URL (par exemple rediriger toutes les requêtes avec des URL contenant des lettres majuscules à leur équivalent en minuscules).

A part cela, je crois que vous devriez être bien le faire. Si vous voulez que tous vos cookies pour être « l'application scope », envisagez de créer un IHttpModule personnalisé avec le code comme celui-ci (ou prolonger 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;
    }
}

Non, ce n'est pas sûr, pour les raisons qui spécifiées.

Mais ... Vous pouvez utiliser cette technique pour répondre à votre intention.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top