Domanda

E 'sicuro usare tale codice?

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

Voglio essere informato in tutti i casi d'angolo, si prega di ...

È stato utile?

Soluzione

In breve, no, non è sicuro. Uso dei percorsi dei cookie è pieno di problemi in quanto sono maiuscole e minuscole in IE e Chrome, ma non FF. Ciò significa che eventuali disallineamenti nel caso in cui il percorso sarà roba le cose.

  1. Quando si genera un cookie, se il percorso si imposta differisce nel caso in cui da ciò che l'utente ha digitato, i browser non conservarlo.

  2. Quando l'utente ritorna, se il percorso entrano differisce nel caso in cui dal primo viaggio, il browser non fornire il cookie con la richiesta.

Quale problema stai cercando di risolvere?

Altri suggerimenti

Se l'applicazione viene eseguita nella radice di un dominio, Request.ApplicationPath == "/". Quindi, con il codice, il percorso del cookie viene //. È possibile schivare questo problema in questo modo:

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

Will correttamente sottolinea , si vuole fare in modo che l'applicazione impone un involucro consistente di URL (es reindirizzare tutte le richieste con URL contenenti lettere maiuscole al loro equivalente minuscolo).

Oltre a questo, credo che si dovrebbe andare bene a fare questo. Se si desidera che tutti i cookie di essere "application scope", prendere in considerazione la creazione di un IHttpModule personalizzato con codice come questo (o estendere 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;
    }
}

No, non è sicuro, per i motivi che verranno specificati.

Ma ... Si consiglia di impiegare questa tecnica per soddisfare il vostro intento.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top