Request.Cookies和Response.Cookies之间的区别

时间:2012-08-03 17:10:42

标签: c# asp.net .net

我在我的代码中多次使用这两个并且不知道区别是什么,如果设置了cookie,它在请求和响应中是不是应该完全相同?请求是最新的还是回复?

编辑:

好的,我得到了请求和响应之间的区别,但是如果我输入

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

大部分时间与

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

但我想知道使用这两者之间有什么区别。

4 个答案:

答案 0 :(得分:28)

正如大家所说,Request.Cookies应该是来自客户端(浏览器)的cookie,Response.Cookies是将发送回客户端(浏览器)的cookie。

black magic 记录良好的*代码,当您向Response添加Cookie时,会将Request.Cookies Cookie中的值复制到Response。因此,您似乎在RequestResponse中都拥有相同的Cookie。请注意,这些复制的cookie并非来自客户端......因此请注意做出错误的决定。

以下是有关代码的讨论的链接:http://forums.asp.net/t/1279490.aspx。特别是,以下列方式添加的Cookie将显示在Request.Cookies集合中:

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

*从Response.Cookies复制Cookie的行为记录在HttpResponse.Cookies文章中:

  

使用HttpResponse.Cookies集合添加Cookie后,即使尚未将响应发送给客户端,Cookie也会立即显示在HttpRequest.Cookies集合中。

答案 1 :(得分:4)

在Asp.net中使用单词Response将数据从服务器发送到客户端,Request用于从客户端获取数据(以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.

答案 2 :(得分:2)

请求cookie是从客户端发送到服务器的内容(因此浏览器提供的内容)。响应cookie是您要在浏览器中放置的cookie。接收来自响应对象的cookie的浏览器的下一个连接将在请求对象中提供cookie。

答案 3 :(得分:1)

取决于具体情况。

请求是每个http请求发送到服务器的数据。响应是服务器 客户端之后的响应。