Http状态的传递和保存 之 Cookie
2014-02-16 18:28
363 查看
Cookie
Cookie是存储在客户端的。
如果想自由的传递和读取,用Cookie。
Cookie是和站点相关的,也就是只有存储Cookie的服务器站点才能读取和访问。并且每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器,是强制性的。Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点相关的Cookie提交到服务器,并且将服务器端返回的Cookie更新回本地数据库,
因此可以将信息保存在Cookie中,然后在服务器端读取、修改。服务器返回数据除了普通的html数据以外,还会返回修改的Cookie,浏览器就把拿到的Cookie值更新本地浏览器的Cookie就可以。看报文。
在服务器端控制Cookie案例,实现记住用户名的功能:
设置值的页面:
设置的Cookie值会随着响应报文头一起发送到浏览器(客户端)。
读取值的页面:
浏览器在请求服务器时,会自动把设置的Cookie随着请求报文头发送到服务器端
服务器端可以从请求报文头中读取到浏览器保存的Cookie值
如果不设定Expires那么生命周期则是关闭浏览器则终止,否则”最多“到Expires的时候终止。
Cookie的缺点:
还不能存储过多的信息,机密信息不能存。
Cookie无法跨不同的浏览器。
Cookie是可以被清除的,不能把不能丢的数据存到Cookie中;
Cookie尺寸有限制,一般就是几K,几百K。
不能把不能丢失的数据存储到Cookie中
只能把可有可无的数据存储到Cookie中,如记住用户名。
Cookie是存储在客户端的。
如果想自由的传递和读取,用Cookie。
Cookie是和站点相关的,也就是只有存储Cookie的服务器站点才能读取和访问。并且每次向服务器请求的时候除了发送表单参数外,还会将和站点相关的所有Cookie都提交给服务器,是强制性的。Cookie也是保存在浏览器端的,而且浏览器会在每次请求的时候都会把和这个站点相关的Cookie提交到服务器,并且将服务器端返回的Cookie更新回本地数据库,
因此可以将信息保存在Cookie中,然后在服务器端读取、修改。服务器返回数据除了普通的html数据以外,还会返回修改的Cookie,浏览器就把拿到的Cookie值更新本地浏览器的Cookie就可以。看报文。
在服务器端控制Cookie案例,实现记住用户名的功能:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebApplication4.Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <input type="submit" name="write" value="写入Cookie" /> <input type="submit" name="read" value="读取Cookie" /> <p> Cookie的值是:<%=strCookie%> </p> </div> </form> </body> </html>
public partial class Default : System.Web.UI.Page { public string strCookie = ""; protected void Page_Load(object sender, EventArgs e) { string read = Request["read"]; string write = Request["write"]; // 写入Cookie操作 if (!string.IsNullOrEmpty(write)) { string username = "admin"; // 将Cookie写入到响应。 Response.SetCookie(new HttpCookie("UserName", username)); } // 从Cookie读取值 else if (!string.IsNullOrEmpty(read)) { // 从客户端请求中读取Cookie HttpCookie cookie = Request.Cookies["UserName"]; if (cookie != null) { strCookie = cookie.Value; } } } }
设置值的页面:
Response.SetCookie(new HttpCookie("UserName",username));
设置的Cookie值会随着响应报文头一起发送到浏览器(客户端)。
读取值的页面:
username=Request.Cookies["UserName"].Value;
浏览器在请求服务器时,会自动把设置的Cookie随着请求报文头发送到服务器端
服务器端可以从请求报文头中读取到浏览器保存的Cookie值
如果不设定Expires那么生命周期则是关闭浏览器则终止,否则”最多“到Expires的时候终止。
HttpCookie cookie = new HttpCookie("UserName", username); // 设置Cookie的过期时间,默认为浏览器的关闭时间。 cookie.Expires = DateTime.Now.AddDays(1); // 将Cookie写入到响应。 Response.SetCookie(cookie);
Cookie的缺点:
还不能存储过多的信息,机密信息不能存。
Cookie无法跨不同的浏览器。
Cookie是可以被清除的,不能把不能丢的数据存到Cookie中;
Cookie尺寸有限制,一般就是几K,几百K。
不能把不能丢失的数据存储到Cookie中
只能把可有可无的数据存储到Cookie中,如记住用户名。
相关文章推荐
- Http状态的传递和保存 之 自己实现“服务器端Cookie”
- Http状态的传递和保存 之 通过Url传递
- Http状态的传递和保存 之 隐藏字段
- Http状态的传递和保存 之 ASP.NET内置Session
- Http状态的传递和保存 之 Application
- Http状态的传递和保存 之 几种数据传递的区别和不同用途
- Http状态的传递和保存
- jmeter Http cookie 管理器初识 传递登录状态至后面接口
- HttpClient4.5.2 使用cookie保持会话——获取cookie之后如何传递它(2)
- HTTP无状态协议分析与Cookie的关系
- nodejs基础教程-简单blog(5)-cookie保存用户登录状态
- au手机のhttps和http的cookie保存地方不一致的问题
- Android 访问WebService登录通过Cookie保存登录状态
- 使用cookie保存用户的登录状态——初步实现
- 使用Cookie保存菜单状态
- HttpClient4.5.2 使用cookie保持会话——获取cookie之后如何传递它
- Framework v4.0 HttpWebRequst 的Bug cookie保存问题
- Http Basic Authentication 的请求头Authorization的状态保存问题:见‘斜粗下划线’部分说明
- asp.net 状态的传递和保存
- Flex使用cookie保存登状态