ASP.NET 中的 Cookies






4.84/5 (86投票s)
在这篇快速文章中,您将学习有关基于 Web 的应用程序中使用的 cookie 的所有信息。
引言
Cookies 还有很多其他名称,例如 HTTP Cookie、Web Cookie、浏览器 Cookie、Session Cookie 等。Cookies 是在 Web 服务器和浏览器未连接时存储有关网站访问者的数据的几种方式之一。cookie 的常见用途是记住访问者。实际上,cookie 是一个由 Web 服务器发送并由 Web 浏览器保存在客户端机器上的小型文本文件。
Cookies 的用途?
Cookies 可用于身份验证、识别用户会话、用户偏好、购物车内容或任何其他可以通过存储文本数据来实现的功能。 Cookies 也可以用于数据从一个页面到另一个页面的传递。
Cookies 安全吗?
嗯,这个问题没有明确的肯定或否定答案。 Cookies 可能会被黑客窃取,以获取对受害者 Web 帐户的访问权限。 即使 cookies 不是软件,它们也不能像普通的exe应用程序一样进行编程。 Cookies 无法携带病毒,也无法在主机上安装恶意软件。 但是,间谍软件可以使用它们来跟踪用户的浏览活动。
使用 Cookies
创建/写入 Cookies
有很多方法可以创建 cookies,我将在下面概述其中的一些方法
方法 1(使用 HttpCookies 类)
//First Way
HttpCookie StudentCookies = new HttpCookie("StudentCookies");
StudentCookies.Value = TextBox1.Text;
StudentCookies.Expires = DateTime.Now.AddHours(1);
Response.Cookies.Add(StudentCookies);
方法 2(直接使用 Response)
//Second Way
Response.Cookies["StudentCookies"].Value = TextBox1.Text;
Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);
方法 3(同一 cookie 中的多个值)
//Writing Multiple values in single cookie
Response.Cookies["StudentCookies"]["RollNumber"] = TextBox1.Text;
Response.Cookies["StudentCookies"]["FirstName"] = "Abhimanyu";
Response.Cookies["StudentCookies"]["MiddleName"] = "Kumar";
Response.Cookies["StudentCookies"]["LastName"] = "Vatsa";
Response.Cookies["StudentCookies"]["TotalMarks"] = "499";
Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);
读取/获取 Cookies
在上面的代码中,我使用了多种方法来写入或创建 cookies,因此我需要在这里分别使用上述所有方法进行写入。
对于方法 1
string roll = Request.Cookies["StudentCookies"].Value; //For First Way
对于方法 2
string roll = Request.Cookies["StudentCookies"].Value; //For Second Way
对于方法 3
//For Multiple values in single cookie
string roll;
roll = Request.Cookies["StudentCookies"]["RollNumber"];
roll = roll + " " + Request.Cookies["StudentCookies"]["FirstName"];
roll = roll + " " + Request.Cookies["StudentCookies"]["MiddleName"];
roll = roll + " " + Request.Cookies["StudentCookies"]["LastName"];
roll = roll + " " + Request.Cookies["StudentCookies"]["TotalMarks"];
Label1.Text = roll;
删除 Cookies
在上面的代码中,我使用了多种方法来创建或读取 cookies。 现在看看下面给出的代码,它将删除 cookies。
if (Request.Cookies["StudentCookies"] != null)
{
Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(-1);
Response.Redirect("Result.aspx"); //to refresh the page
}
理解 HttpCookie 类。它包含所有 cookie 值的集合。
我们不需要为HttpCookies
类使用任何额外的命名空间(我们在上面的方法 1 中已经使用过),因为这个类是从System.Web
命名空间派生的。 HttpCookies
类允许我们在不使用Response
和Request
对象的情况下使用 cookies(我们在上面的方法 2 和方法 3 中已经使用过)。

HttpCookie
类有一个属性列表,让我们概述一下它们。
Domain
:它包含 cookie 的域。Expires
:它包含 cookie 的到期时间。HasKeys
:如果 cookie 有子键,则包含 True。Name
:它包含 cookie 的名称。Path
:它包含与 cookie 一起提交的虚拟路径。Secure
:如果 cookie 只能在安全连接中传递,则包含 True。Value
:它包含 cookie 的值。值
:
Cookies 的限制
Cookies 有以下限制
- cookie 的大小限制为 4096 字节。
- 在一个网站上总共可以使用 20 个 cookies; 如果您超过此限制,浏览器将删除较旧的 cookie。
- 最终用户可以通过浏览器停止接受 cookie,因此建议检查用户的状态并提示用户启用 cookie。
有时,最终用户会在浏览器上禁用 cookies,有时浏览器没有接受 cookies 的功能。 在这种情况下,您需要在网站的主页上检查用户的浏览器,并显示相应的消息或重定向到具有此类消息的相应页面以首先启用它。 以下代码将检查用户的浏览器是否支持 cookies。 它还会检测是否已禁用。
protected void Page_Load(object sender, EventArgs e)
{
if (Request.Browser.Cookies)
{
//supports the cookies
}
else
{
//not supports the cookies
//redirect user on specific page
//for this or show messages
}
}
始终建议不要在 cookies 中存储敏感信息。
下载此帖子附带的示例代码以自行检查。
这就是关于 ASP.NET cookies 的全部内容。 请发布您的反馈。