41

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

编辑:

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

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

大多数情况下是一样的

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

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

4

4 回答 4

44

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

当您将cookieResponse添加到. 结果,看起来您在和中都有相同的 cookie 。请注意,这些复制的 cookie 并非来自客户端……所以要小心做出错误的决定。Request.CookiesResponseRequestResponse

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

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

Response.Cookies*本文中记录了从其中复制 cookie 的行为HttpResponse.Cookies

使用集合添加 cookie 后,即使尚未将响应发送到客户端HttpResponse.Cookies,该 cookie 也会立即在集合中可用。HttpRequest.Cookies

于 2012-08-03T17:22:00.410 回答
4

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

于 2012-08-03T17:13:11.650 回答
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.
于 2012-08-03T18:38:23.550 回答
2

得看什么语境。

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

于 2012-08-03T17:13:31.227 回答