È possibile impostare un cookie durante un reindirizzamento in ASP.NET?
-
27-10-2019 - |
Domanda
Sto usando ASP.NET. O aggiungo o imposto un cookie (a seconda che il HttpRequest
contiene un cookie con chiave specificata) e immediatamente dopo la chiamata Response.Redirect
. Il cookie non è impostato. Questo è un comportamento corretto? C'è qualcosa di reciprocamente esclusivo nell'impostazione di un cookie durante una risposta HTTP con un codice di stato 302?
Ecco la fonte:
if (context.HttpContext.Request.Browser.Cookies)
{
var cookies = context.HttpContext.Request.Cookies;
var stateCookie = new HttpCookie(SR.session, clientState.SessionId.ToString());
if (cookies.AllKeys.Contains(SR.session))
{
context.HttpContext.Response.Cookies.Set(stateCookie);
}
else
{
context.HttpContext.Response.Cookies.Add(stateCookie);
}
}
Ecco le intestazioni di risposta
- X-ASPNETMVC-WIRION-2.0
- Connessione - Chiudi
- Cache -Control - privato
- Content -Type - Testo/HTML
- Data - Sole, 20 marzo 2011 03:48:04 GMT
- Posizione - http: // localhost: 3599/home/reindirizzati
- Server - ASP.NET Development Server/9.0.0.0
- X-ASPNET-WIRION-2.0.50727
Soluzione
Dopo aver cercato su Google un po ', sembra che sì, ci possono essere problemi con l'impostazione del cookie nella risposta di reindirizzamento in quanto può essere ignorato da alcuni browser. (Potrebbe avere un certo senso, poiché la risposta sta davvero dicendo al cliente di ignorare la risorsa e ottenere invece qualche altra risorsa).
Questo è già stato discusso qui: Invio di biscotti del browser durante un reindirizzamento 302
Quindi cambierei l'architettura in un modo che consente alla pagina di reindirizzare per impostare il cookie.