`

8、使用浏览器Cookie

阅读更多
使用浏览器Cookie

set-cookie:message=hello

注意:
Cookie就是一段文本。Cookie只能用于存储字符串值。

可以创建两种类型的cookie:会话Cookie和持久化Cookie
会话Cookie只存于内存,当用户关闭浏览器时,会话Cookie就永远消失了。
持久化Cookie可以存在几个月甚至几年。持久化Cookie创建后,会被浏览器长久地保存在用户的电脑上。
\Documents and Settings\[user]\Cookies


1、Cookie的安全性限制
首先,所有的Cookie是与域名相关的
其次,浏览器存储Cookie的重要限制是其大小的限制 不能超过4096字节(包含所有的Cookie名称和值在内)
最后,大多数浏览器都限制可以被设置的cookie数量,一个域名不超过20个cookie (IE除外)

2、创建Cookie
Response.Cookies 集合添加Cookie
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void btnAdd_Click(object sender, EventArgs e)
    {
        Response.Cookies["message"].Value = txtCookieValue.Text;
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblCookieValue" runat="server" AssociatedControlID="txtCookieValue"
            Text="Cookie Value"></asp:Label>
        <asp:TextBox ID="txtCookieValue" runat="server"></asp:TextBox>
        <asp:Button ID="btnAdd" runat="server" Text="Add Value" OnClick="btnAdd_Click" />
    </div>
    </form>
</body>
</html>

Cookie的名称是区分大小写的。
2011-5-11 11:48 danny

创建持久化的Cookie
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        int counter = 0;
        if (Request.Cookies["counter"] != null)
            counter = Int32.Parse(Request.Cookies["counter"].Value);
        counter++;
        Response.Cookies["counter"].Value = counter.ToString();
        Response.Cookies["counter"].Expires = DateTime.Now.AddYears(2);
        lblCounter.Text = counter.ToString();
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        You have visited this page
        <asp:Label ID="lblCounter" runat="server" Text="Label"></asp:Label>
        times!
    </div>
    </form>
</body>
</html>

Response.Cookies["counter"].Expires = DateTime.Now.AddYears(2);
设为两年。当为某个Cookie设置了过期时间后,该Cookie就被保存为持久化cookie了。

3、读取Cookie
可以使用Response.Cookies集合创建和修改Cookie,
可以使用Request.Cookies集合读取Cookie值

GetCookies.aspx
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        ArrayList colCookies = new ArrayList();
        for (int i = 0; i < Request.Cookies.Count; i++)
            colCookies.Add(Request.Cookies[i]);
        grdCookies.DataSource = colCookies;
        grdCookies.DataBind();
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="grdCookies" runat="server">
        </asp:GridView>
    </div>
    </form>
</body>
</html>



4、设置Cookie属性
Domain 关联到的Cookie的域名。默认当前域名
Expires  指定过期时间
HasKeys  确定该Cookie是否是一个多值cookie
HttpOnly 避免Cookie被JavaScript访问
Name 用户指定Cookie的名称
Path   关联到Cookie的路径。默认值是/
Secure  指定Cookie需要通过SSL连接传递
Value   允许读/写Cookie的值
Values  多值

5、删除Cookie
删除Cookie的方法并不直观。要删除一个存在的Cookie,必须设置其过期时间为一个过去的时间。

DeleteAllCookies.aspx
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        string[]
             cookies = Request.Cookies.AllKeys;
        foreach (string cookie in cookies)
        {
            BulletedList1.Items.Add("Deleting " + cookie);
            Response.Cookies[cookie].Expires = DateTime.Now.AddDays(-1);
        }
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:BulletedList ID="BulletedList1" EnableViewState="false" runat="server">
        </asp:BulletedList>
    </div>
    </form>
</body>
</html>


<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        string[]
             cookies = Request.Cookies.AllKeys;
        foreach (string cookie in cookies)
        {
            BulletedList1.Items.Add("Deleting " + cookie);
            Response.Cookies[cookie].Expires = DateTime.Now.AddDays(-1);
        }
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:BulletedList ID="BulletedList1" EnableViewState="false" runat="server">
        </asp:BulletedList>
    </div>
    </form>
</body>
</html>

2011-5-11 22:20 danny
6、使用多值Cookie
根据Cookie规范,单个域名,浏览器不能存储超过20个Cookie。可以通过创建多值Cookie来超越该限制。
多值Cookie是一个包含子键的Cookie。可以根据需要创建任意数量的子键。

setCookieValues.aspx
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        Response.Cookies["preferences"]["firstName"] = TxtFirstName.Text;
        Response.Cookies["preferences"]["lastName"] = txtLastName.Text;
        Response.Cookies["preferences"]["favoriteColor"] = txtFavoriteColor.Text;
        Response.Cookies["preferences"].Expires = DateTime.MaxValue;
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:Label ID="lblFirstName" runat="server" AssociatedControlID="TxtFirstName" Text="First Name"></asp:Label>
        <br />
        <asp:TextBox ID="TxtFirstName" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="lblLastName" runat="server" AssociatedControlID="TxtFirstName" Text="Last Name"></asp:Label>
        <br />
        <asp:TextBox ID="txtLastName" runat="server"></asp:TextBox>
        <br />
        <asp:Label ID="lblFavoriteColor" runat="server" AssociatedControlID="TxtFirstName"
            Text="Favorite Color"></asp:Label>
        <br />
        <asp:TextBox ID="txtFavoriteColor" runat="server"></asp:TextBox>
        <br />
        <asp:Button ID="btnSubmit" Text="Submit" runat="server" OnClick="btnSubmit_Click" />
    </div>
    </form>
</body>
</html>


查看
GetCookieValues.aspx
<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Request.Cookies["preferences"] != null)
        {
            lblFirstName.Text = Request.Cookies["preferences"]["firstName"];
            lblLastName.Text = Request.Cookies["preferences"]["lastName"];
            lblFavoriteColor.Text = Request.Cookies["preferences"]["favoriteColor"];
        }
    }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        First Name:
        <asp:Label ID="lblFirstName" runat="server"></asp:Label>
        <br />
        Last Name:
        <asp:Label ID="lblLastName" runat="server"></asp:Label>
        <br />
        Favorite Color:
        <asp:Label ID="lblFavoriteColor" runat="server"></asp:Label>
        <br />
    </div>
    </form>
</body>
</html>


2011-5-13 10:59 danny


分享到:
评论

相关推荐

    C#提取Chrome浏览器Cookie值源码

    在我们的场景中,`C#`将被用来读取存储在本地的Chrome浏览器Cookie文件。 `Chrome Cookies`是浏览器用于存储网站会话信息的小型文本文件,包含用户名、登录状态等关键数据。由于安全原因,这些Cookie通常被加密存储...

    Cookie浏览器

    - Cookie篡改:恶意用户可能会尝试获取和修改他人的Cookie,实现冒充身份的目的,因此使用Cookie浏览器时应警惕网络安全。 - Cookie盗窃:网络钓鱼和恶意软件可能会窃取用户的Cookie,导致账户被盗。 - 隐私泄露...

    .net 获取浏览器Cookie(包括HttpOnly)实例分享.docx

    下面,我们将详细介绍如何使用 .net 获取浏览器 Cookie,包括 HttpOnly 类型的 Cookie。 一、接口文件 在获取浏览器 Cookie 之前,我们需要定义一些枚举类型和 DLL 导入函数。这些枚举类型和 DLL 导入函数将帮助...

    browser-cookie 获取浏览器cookie

    ### browser-cookie3:获取浏览器cookie #### 一、概述 `browser-cookie3` 是一个用于Python 3的库,能够帮助用户将当前浏览器中的cookies提取出来,并存储到一个`cookiejar`对象中,从而实现无需登录即可通过...

    cookiejs一个用于处理浏览器cookie的简单轻量级JavaScriptAPI

    总之,Cookie.js作为一款小巧且功能强大的JavaScript库,为处理浏览器cookie提供了一种简便易用的解决方案。其小巧的体积、无依赖的特性,以及丰富的API接口,使其成为开发者处理cookie问题的首选工具。在压缩后的...

    浏览器Cookie一键切换_自动切换用户.mp4

    浏览器可以通过改变Cookie,实现快速切换登录帐号。 即可以点击工具栏Cookie按钮切换帐号, 也可以通过项目管理脚本定时自动切换帐号。 实测结果,适用于大多数网站,论坛等。

    候鸟浏览器cookie号导入导出清空视频教程.zip

    【候鸟浏览器Cookie号导入导出清空视频教程】是一个针对使用候鸟浏览器进行Cookie管理的教程资源。在互联网上,Cookie是网站用于存储用户信息的一种小型文本文件,包括登录状态、购物车信息等。了解如何正确管理和...

    浏览器cookie获取插件Demo.rar

    浏览器Cookie获取插件Demo是一个用于演示如何在浏览器环境中获取指定URL的Cookie信息的示例项目。这个RAR压缩包中包含了实现这一功能的源代码和可能的文档,让我们深入了解一下相关知识点。 1. **浏览器插件**:...

    百度账号COOKIE登录浏览器

    标签“COOKIE浏览器”表明这款软件的核心特性是支持处理和使用COOKIE进行身份验证。这样的浏览器通常会有安全措施来保护用户的登录信息,防止未授权的访问或窃取。 压缩包子文件的文件名称列表中,“skin.dll”可能...

    浏览器中使用JS操作Cookie详解

    ​我们知道,Cookie是存储在客户端的,并且现在前后端分离慢慢变得流行起来,因此如何在浏览器上可以使用方便快捷的操作Cookie变得尤为重要。使用原生JS操作方法在上篇文章中已经写过,原生JS虽然更简单,但是操作...

    两个浏览器Cookie管理工具

    标题中的“两个浏览器Cookie管理工具”指的是用于管理和控制Web浏览器中Cookie的软件工具。Cookie是网站在用户浏览器上存储的小型文本文件,用于记录用户的浏览历史、登录状态、个性化设置等信息。对于开发者、网络...

    浏览器爬虫必备,获取浏览器的cookie

    下面我们将详细介绍获取浏览器Cookie的方法和相关知识点。 一、Cookie的介绍 Cookie是服务器发送到用户浏览器的 pequeño 文本文件,用来存储用户的信息和会话信息。Cookie主要分为两种:会话Cookie和持久Cookie。...

    浏览器删除cookie方法.docx

    而IE8浏览器就没有确实要删除cookie的提示。 2. 火狐浏览器删除cookie方法: 步骤1:正常打开火狐浏览器,找到并单击火狐浏览器菜单中的“工具”下的“选项”。 步骤2:在打开的火狐浏览器选项窗口中单击“隐私”...

    FlashCookie 不被浏览器清除的Cookie

    由于它们不遵循浏览器的隐私策略,即使用户选择清空浏览器Cookie,FlashCookie仍然存在,这使得它们成为一种强大的用户跟踪工具。 然而,这种特性引发了一些隐私和安全问题。因为用户可能不清楚这些FlashCookie的...

    易语言取设cookie

    当需要读取用户浏览器中存储的Cookie信息时,比如验证登录状态或恢复浏览历史,可以使用这个函数。 在易语言的源码中,这两个函数通常会结合使用。首先,`InternetSetCookieA` 设置Cookie,然后通过 `...

    CefShafp浏览器多开-Cookie独立

    标题中的"CefSharp浏览器多开-Cookie独立"指的是利用CefSharp库实现浏览器的多实例运行,且每个实例的Cookie管理保持独立。CefSharp是一个.NET框架下的Chromium Embedded Framework (CEF)绑定库,它允许开发者在...

    C# 调用 Cefsharp浏览器获取登录后的cookie

    5. **获取cookie**:登录成功后,可以使用`BrowserHost.GetCookieManager`方法获取cookie管理器,然后调用`GetCookiesAsync`异步获取所有cookie。示例代码如下: ```csharp var cookieManager = browser....

    Python-pycookiecheat从浏览器的已验证会话中获取Cookie以便在Python脚本中使用

    `pycookiecheat`是一个方便的Python库,它允许我们从已经验证的浏览器会话中提取Cookie,然后在Python脚本中使用这些Cookie来模拟登录状态。 首先,让我们深入了解一下什么是Cookie。Cookie是服务器发送到用户...

    易语言-易语言置外部浏览器Cookie例子(支持所有浏览器)

    本示例“易语言-易语言置外部浏览器Cookie例子(支持所有浏览器)”是一个网络相关的源码项目,旨在教用户如何在易语言中操作浏览器的Cookie。 Cookie是网站在用户浏览器上存储的小型文本文件,用于记录用户的偏好...

Global site tag (gtag.js) - Google Analytics