Request.Cookies 和 Response.Cookies 的区别
来源:互联网 发布:京东怎么做淘宝客 编辑:程序博客网 时间:2024/05/20 19:18
.NET中提供了读写Cookie的多种方法,
Request.Cookies 是客户端通过 Cookie 标头形式由客户端传输到服务器的 Cookie;
Response.Cookies 在服务器上创建并以 Set-Cookie 标头的形式传输到客户端。
一个是客户端向服务器端发送的来的,一个是服务器发送到客户端的。
第一次创建Cookies的时候,下面的2种读取方法读取到的内容是一样:
C# 代码
HttpCookie hc = new HttpCookie("User2");
hc["UserName"] = "mengxianhui";
Response.Cookies.Add(hc);//第一种方法
Response.Cookies["User1"]["UserId"] = "net_lover";//第二种方法
Response.Write(Request.Cookies["User1"].Values["UserId"].ToString());
Response.Write(Request.Cookies["User2"].Values["UserName"].ToString());
Response.Write("<hr>");
Response.Write(Response.Cookies["User1"].Values["UserId"].ToString());
Response.Write(Response.Cookies["User2"].Values["UserName"].ToString());
但是,一旦Cookie存在,再使用上面的方法进行读取,结果是有差别的,Response.Cookies可以立即读取到新的Cookie,而Request.Cookies读取到仍是上一次设置的,也就是必须通过客户端向服务器发送请求时才能读取到。为什么会有这样的差别,应该是.NET实现的问题,里面有这么一段:
C# 代码
if (includeResponse && (this.Response != null))
{
HttpCookieCollection cookies = this.Response.Cookies;
if (cookies.Count > 0)
{
HttpCookie[] dest = new HttpCookie[cookies.Count];
cookies.CopyTo(dest, 0);
for (int i = 0; i < dest.Length; i++)
{
cookieCollection.AddCookie(dest[i], true);
}
}
}
在Cookie不存在时,它应该是读取Response.Cookies里面的Cookie了,所以第一次读取相同,而以后读取不同的原因吧。另外,Response.Cookies必须是在设置完后读取,不能像Request.Cookies那样随时读取,如在别的页面读取Cookies,下面的方法就是错误的
C# 代码
protected void Page_Load(object sender, EventArgs e)
{
Response.Write(Response.Cookies["User1"].Values["UserId"].ToString());
Response.Write(Response.Cookies["User2"].Values["UserName"].ToString());
}作者 孟宪会
- Request.Cookies 和 Response.Cookies 的区别
- Response.cookies和Request.cookies
- Response.Cookies的用法
- cookies 和 session的区别
- Cookies 和 Session的区别
- cookies和session的区别
- Session和Cookies的区别
- cookies和session的区别
- session和cookies的区别
- session和cookies的区别
- Cookies 和 Session的区别
- Cookies 和 Session的区别
- Cookies 和 Session的区别
- Cookies 和 Session的区别
- Cookies 和 Session的区别
- cookies和session的区别
- Cookies 和 Session的区别
- Cookies 和 Session的区别
- How I Hire Programmers-我是如何招募程序员的
- java lookahead的应用
- g++参数介绍
- java日志框架分析与比较
- 25个必须记住的SSH命令
- Request.Cookies 和 Response.Cookies 的区别
- iphone 如何获得系统时间和日期
- ZStack OSAL的事件(event)与消息(message)——part 2
- JSP页面中调用window.onload对IE8与IE10不同
- 验证码识别(一)
- Unity3d 截屏之后转换成Texture2d
- 验证码识别过程(二)
- 验证码识别部分代码(三)
- java用RandomAccessFile实现多线程下载