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
È stato utile?

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.

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