Разница между Request.Cookies и Response.Cookies - программирование
Подтвердить что ты не робот

Разница между Request.Cookies и Response.Cookies

Я использую оба эти много раз в своем коде и не знаю, какова разница, если установлен файл cookie, он не должен быть точно таким же в запросе и ответе? и запрашивается ли запрос на самую последнюю дату или ответ?

EDIT:

ok, я получаю разницу между запросом и ответом, но если я наберу

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

в большинстве случаев это то же самое, что

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

но мне интересно, в чем разница между использованием двух.

4b9b3361

Ответ 1

Как все говорят, что Request.Cookies должны быть cookie, исходящие от клиента (браузер), а Response.Cookies - это файлы cookie, которые будут отправляться обратно клиенту (браузеру).

Существует код black magic хорошо документированный *, который копирует значения из Response cookie в Request.Cookies при добавлении файлов cookie в Response. В результате похоже, что у вас есть одинаковые файлы cookie как в Request, так и Response. Обратите внимание, что эти скопированные файлы cookie не пришли от клиента... так что будьте осторожны при принятии неправильных решений.

Вот ссылка на обсуждение кода: http://forums.asp.net/t/1279490.aspx. В частности, файлы cookie, добавленные следующим образом, будут отображаться в коллекции Request.Cookies:

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

* Поведение файлов cookie, копируемых из Response.Cookies, описано в статье HttpResponse.Cookies:

После добавления файла cookie с помощью коллекции HttpResponse.Cookies куки файл сразу доступен в коллекции HttpRequest.Cookies, даже если ответ не был отправлен клиенту.

Ответ 2

Слово Response используется в Asp.net для отправки данных с сервера клиенту и Запрос используется для получения данных от клиента (в виде файлов cookie, строки запроса) и т.д. Пример:

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   

и, как вы упомянули

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.

Ответ 3

Файл cookie запроса - это то, что отправляется от клиента на сервер (таким образом, что предоставляет браузер). Файлы cookie ответов - это файлы cookie, которые вы хотите разместить в браузере. Следующее соединение браузера, принявшего cookie из объекта ответа, предоставит куки файл в объекте запроса.

Ответ 4

Зависит от контекста.

Запрос - это данные, которые отправляются на сервер с каждым HTTP-запросом. Ответ - это ответ после запроса сервера клиенту.