2012-08-03 10 views
16

Io uso entrambe queste volte nel mio codice e non so davvero quale sia la differenza, se un cookie è impostato non dovrebbe essere esattamente lo stesso in richiesta e risposta ? e la richiesta va al più aggiornato o alla risposta?Differenza tra Request.Cookies e Response.Cookies

EDIT:

ok, ho capito la differenza tra una richiesta e una risposta, ma se digito

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

Si tratta il più delle volte lo stesso di

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

ma mi chiedo quale sia la differenza tra l'uso dei due.

+0

è la differenza solo dovrebbe essere un punto e virgola ';'? – BlackVegetable

+0

ok, supponiamo che ci sia un punto e virgola lì, ne inserirò uno, intendevo la Risposta vs. Richiesta - che il titolo della domanda mostra –

+0

Oh, strano, avrei potuto giurare le due righe sia dette Richiesta per un po '. Scusate. – BlackVegetable

risposta

18

Come tutti dicono che i cookie Request.Cookies devono essere cookie provenienti dal client (browser) e Response.Cookies sono cookie che verranno inviati al client (browser).

C'è una magia nera ben documentato * codice che copia i valori da Response cookies per Request.Cookies quando si aggiungono i cookie per Response. Di conseguenza sembra che tu abbia gli stessi cookie sia in Request sia in Response. Nota che questi cookie copiati non provengono dal client ... quindi fai attenzione a prendere decisioni sbagliate.

Questo è un link alla discussione sul codice: http://forums.asp.net/t/1279490.aspx. In particolare, i cookie aggiunti in questo modo verranno visualizzati nella raccolta Request.Cookies:

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

* Il comportamento di biscotti sempre copiato da Response.Cookies è documentato nell'articolo HttpResponse.Cookies:

Dopo si aggiunge un cookie utilizzando la raccolta HttpResponse.Cookies, il cookie è immediatamente disponibile nella raccolta HttpRequest.Cookies, anche se la risposta non è stata inviata al client.

+4

Sembra più un insetto che una magia nera. Perché dovrebbe avvenire questa copia? –

+0

@GabrielBurete - Ho aggiunto lo stesso link della [domanda originale] (http://stackoverflow.com/questions/19557365/response-cookies-show-up-in-request-cookies/19557437#19557437). Se sei interessato perché è stato implementato un particolare comportamento - non lo so, puoi provare a porre una domanda separata, ma in genere tali domande archeologiche sono chiuse come non rispondibili. –

+0

Ho ricevuto la tua risposta, grazie! –

2

Il cookie di richiesta è ciò che viene inviato dal client al server (quindi ciò che il browser fornisce). I cookie di risposta sono i cookie che si desidera inserire nel browser. La prossima connessione dal browser che ha accettato il cookie dall'oggetto risposta fornirà il cookie nell'oggetto richiesta.

1

Dipende dal contesto.

Richiesta è il dato che viene inviato al server con ogni richiesta http. La risposta è la risposta dopo la richiesta da il server a il client.

4

La parola Response viene utilizzato in Asp.net per inviare i dati dal server al client e il Request viene utilizzato per ottenere i dati dal client (in forma di cookie, query string), ecc Esempio:

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 

e come lei ha ricordato

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.