2012-08-03 17 views
16

Utilizo estas dos veces en mi código y realmente no sé cuál es la diferencia, si se establece una cookie, ¿no debería ser exactamente igual en solicitud y respuesta? ? y ¿la solicitud va a la más actualizada, o respuesta?Diferencia entre Request.Cookies y Response.Cookies

EDIT:

bien, lo entiendo la diferencia entre una petición y una respuesta, pero si escribo

string a = HttpContext.Current.Request.Cookie["a"].Value; 

Es mayor parte del tiempo lo mismo que

string a = HttpContext.Current.Response.Cookie["a"].Value; 

pero me pregunto cuál es la diferencia entre usar los dos.

+0

es la diferencia simplemente supone que es un punto y coma '; '? – BlackVegetable

+0

bien, supongamos que hay un punto y coma allí, voy a poner uno, me refería a la Respuesta vs. Solicitud, que el título de la pregunta muestra –

+0

Oh, extraño, podría haber jurado las dos líneas, ambas dijeron Solicitud por un tiempo. Lo siento. – BlackVegetable

Respuesta

18

Como todo el mundo dice Request.Cookies se supone que son cookies procedentes del cliente (navegador) y Response.Cookies son cookies que se enviarán de vuelta al cliente (navegador).

Hay una magia negro bien documentado * código que copia valores de Response cookies para Request.Cookies cuando se agrega cookies para Response. Como resultado, parece que tiene las mismas cookies en Request y Response. Tenga en cuenta que estas cookies copiadas no provienen del cliente ... así que tenga cuidado de tomar decisiones equivocadas.

Aquí hay un enlace a la discusión sobre el código: http://forums.asp.net/t/1279490.aspx. En particular, las cookies agregados de la siguiente manera aparecerán en el Request.Cookies colección:

Response.Cookies.Add(HttpCookie("MyCookie", "MyValue")) 

* El comportamiento de las cookies conseguir copiado de Response.Cookies se documenta en el artículo HttpResponse.Cookies:

Después agrega una cookie utilizando la colección HttpResponse.Cookies, la cookie está inmediatamente disponible en la colección HttpRequest.Cookies, incluso si la respuesta no se ha enviado al cliente.

+4

Suena más como un error en lugar de magia negra. ¿Por qué debería ocurrir esta copia? –

+0

@GabrielBurete - He agregado el mismo enlace que en su [pregunta original] (http://stackoverflow.com/questions/19557365/response-cookies-show-up-in-request-cookies/19557437#19557437). Si le interesa por qué se implementó un comportamiento en particular, no sé, puede tratar de hacer una pregunta por separado, pero en general tales preguntas arqueológicas se cierran como no respondedores. –

+0

¡Recibí tu respuesta, gracias! –

2

La cookie de solicitud es lo que se envía del cliente al servidor (por lo tanto, lo que proporciona el navegador). La cookie de respuesta son las cookies que desea colocar en el navegador. La siguiente conexión del navegador que acepta la cookie del objeto de respuesta proporcionará la cookie en el objeto de solicitud.

1

Depende del contexto.

La solicitud es la información que se envía al servidor con cada solicitud HTTP. La respuesta es la respuesta después de la solicitud por el servidor a el cliente.

4

La palabra Response se utiliza en Asp.net para enviar datos desde el servidor al cliente y el Request se utiliza para obtener los datos del cliente (en forma de galletas, cadena de consulta), etc. Ejemplo:

Response.Write("will write the content on the form which will return to the client"); 
// Response.Cookies will send the cookie to the client browser. 
Response.Cookies.Add(HttpCookie("MyCookie", "MyValue")) 
//and Request.Cookies is used to get the cookie value which is already present in the clinet browswer 

y como usted ha mencionado

string a = HttpContext.Current.Request.Cookie["a"].Value; 
// I think this will check the cookie which is present in the client browser [ If client has sent the cookie to the server ] 

string a = HttpContext.Current.Response.Cookie["a"].Value; 
// and this will see the only Response object. If the cookie present in the response object then it will return you otherwise not.