您的位置:首页 > 理论基础 > 计算机网络

Http状态的传递和保存 之 Cookie

2014-02-16 18:28 363 查看
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中,如记住用户名。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: