Разница между Request.Cookies и Response.Cookies
Я использую оба эти много раз в своем коде и не знаю, какова разница, если установлен файл cookie, он не должен быть точно таким же в запросе и ответе? и запрашивается ли запрос на самую последнюю дату или ответ?
EDIT:
ok, я получаю разницу между запросом и ответом, но если я наберу
string a = HttpContext.Current.Request.Cookie["a"].Value;
в большинстве случаев это то же самое, что
string a = HttpContext.Current.Response.Cookie["a"].Value;
но мне интересно, в чем разница между использованием двух.
Ответы
Ответ 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-запросом. Ответ - это ответ после запроса сервера клиенту.