`
灵雨飘零
  • 浏览: 34967 次
  • 性别: Icon_minigender_1
  • 来自: 唐山
文章分类
社区版块
存档分类
最新评论

谈谈ASP.NET中的Cookies

 
阅读更多

一、Cookies简介

想必做.NET的人都遇到过Cookies这个名词,没有用过也至少听过吧!(估计这种情形特别特别的少!~)。其实,说到Cookies它也有许多别的叫法,姑且叫做别名吧,比如说 HTTP Cookie,Web Cookie,Brower Cookie,Session Cookie等等,名字不一样,其实指的都是同一个东东,整所谓换汤不换药!~。就是这个理。

Cookies主要的作用是为了存储少量数据(注意 是少量),主要是当服务器和浏览器之间不在连接的时候,它会自动的保存一些访问者的信息。还是特别需要强调一下的时候,cookies是一个存储少量数据类型的,而且被存储在客户端上面,比如说 浏览器里面。

比如下面2张图片:

初始化Cookie

上面2张图很浅显的说明了cookie的使用方式。

二、Cookies的使用范围及优势

说到Cookies的使用范围,我们都特别的熟悉,比如权限、session的用户名、用户购物时的购物车等等,这些都在我们平常的开发中很常见很常见的功能。当然,不止这些,你还可能用在其他的方面。

我们需要注意的是,Cookies并不仅仅只是存储数据,它另一方面的功能是能把数据从一个页面传递到另外一个页面。

优势:

1.简单使用

2.对浏览器会保护好它发送的数据(也就是有一定的加密,但强度不强)

3.如果几个站点都有cookie的话,那么浏览器会自定对他们进行安排

三、Cookies的安全性及在本地磁盘的位置

对于安全性这个问题,其实Cookies是显而易见的,就是它存在不安全性。因为Cookies记录了一些用户操作的痕迹,所以一些黑客啊就能通过获取用户的访问权限进行数据的窃取或破坏,从这里来说Cookie有它的不友好的一面。当然,Cookies它不不是一种软件,所以它也就不能像一些可执行文件一样进行执行,也不能在用户的cookies里面携带病毒。

虽然,cookies里面有不安全的成分在里面,但不能否认的是cookies带给我们的开发者的好处。比如,登入一个网站后,保存用户名,然后能在各个页面进行调用,多么的有用?

那Cookie在本地磁盘哪里呢?

首先你需要把勾选“显示所有文件及文件夹”

然后浏览器到C:\Users\【用户名】\AppData\Roaming\Microsoft\Windows\Cookies 中的当前用户,打开cookies文件夹 如下:

四、创建和读取Cookies的方法

4.1 通过HTTPCookies类进行创建

创建Cookies:

HttpCookie StudentCookies = new HttpCookie("StudentCookies");
StudentCookies.Value = TextBox1.Text;
StudentCookies.Expires = DateTime.Now.AddHours(1);
Response.Cookies.Add(StudentCookies);

读取Cookies:

string roll = Request.Cookies["StudentCookies"].Value;

4.2直接通过Response进行创建

创建Cookies:

Response.Cookies["StudentCookies"].Value = TextBox1.Text;
Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(1);

读取Cookies:

string roll = Request.Cookies["StudentCookies"].Value;

4.3多值的存储

创建Cookies:

复制代码
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:

复制代码
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的实质是修改它的过期时间,代码如下:

if (Request.Cookies["StudentCookies"] != null)
{
    Response.Cookies["StudentCookies"].Expires = DateTime.Now.AddDays(-1);
    Response.Redirect("Result.aspx");  //to refresh the page
}

六、HTTPCookie的类包含了所有cookies的集合

对HttpCookie而言,我们不需要提供额外的命名空间,因为HttpCookie类继承自System.Web命名空间。通过HttpCookie,可以使得我们用cookie的时候不需要使用Response和Request,比如4.2和4.3。

HttpCooki类有一些属性,如下,都很好理解的:

  • Domain: Cookie的域
  • Expires: Cookie的过期日期
  • HasKeys: Cookie是否有子键
  • Name: Cookie的名字
  • Path: Cookie的虚拟路径
  • Secure: 是否进行安全的连接
  • Value: Cookie的值
  • Values:多个值

七、Cookie需要注意的地方

1.Cookies的大小是 4096bytes

2.在单个网站最多只能有20个cookies,如果你超过了20个,那么对不起,网站会自动帮你删除老的cookie。

3.终端用户有权利在浏览器上关闭cookie的使用。

如图(我的是firfox浏览器):

有的时候,终端用户会在浏览器上禁用cookie,更极端的是 有一些浏览器上面没有这个cookie功能。在这样的例子下面,你在开发的时候,在使用cookie的时候,你需要提前进行检查一下。如果当前浏览器不支持cookie,你还得需要进行做其他操作。

下面的一段代码就是用来判断是否当前浏览器支持cookie的:

复制代码
protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Browser.Cookies)
    {
        //支持Cookie
    }
    else
    {
        //不支持 cookies
        //指定到用户指定的页面
    }
}
复制代码

分享到:
评论

相关推荐

    ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典

    ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP.NET入门经典ASP...

    ASP.NET中cookies的读写(多子值)

    在ASP.NET中,Cookie是客户端存储数据的一种机制,通常用于跟踪用户信息或保持登录状态。本文将详细介绍如何在ASP.NET中处理具有多个子值的Cookie。 首先,理解Cookie的基本概念。Cookie是由Web服务器发送到浏览器...

    ASP.NET Core 3.1中文教程.pdf

    ASP.NET Core 3.1 中文教程 ASP.NET Core 是 Microsoft 开发的一款免费、开源的 Web 应用程序框架,适用于开发跨平台的 Web 应用程序。本文档提供了 ASP.NET Core 3.1 的中文使用手册,涵盖了ASP.NET Core 的各种...

    ASP.NET AJAX程序设计——第I卷:服务器端ASP.NET 2.0 AJAX Extensions与ASP.NET AJAX Control Toolkit 源代码

    本卷从最易于理解和使用的那部分入手,介绍ASP.NET AJAX框架中能够与传统ASP.NET无缝对接的服务器端部分,包括服务器端ASP.NET AJAX Extensions与ASP.NET AJAX Control Toolkit。这部分内容不需要读者有任何的客户端...

    ASP.Net如何用Cookies保存对象

    在ASP.Net开发中,为了优化性能和减轻服务器负担,我们有时会选择使用Cookies而不是Session来存储用户状态信息。然而,Cookies的局限性在于它们只能存储字符串数据。为了解决这个问题,我们可以利用.NET框架提供的...

    asp.net 操作cookies的通用类

    在 ASP.NET 中,操作客户端的Cookies是常见的需求,因为Cookies用于存储用户的状态信息,如登录状态、个性化设置等。下面将详细解释如何使用提供的`myCookie`类来操作Cookies。 首先,我们来看`myCookie`类的定义。...

    asp.net排课系统

    asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统asp.net 排课 系统

    ASP.NET期末复习题

    * ASP.NET 配置系统包括服务器配置和应用程序配置,服务器配置信息存储在 machine.config 文件中,应用程序配置信息存储在web.config 文件中 * ASP 配置系统依赖于 IIS 元库,而 ASP.NET 配置系统是一个基于XML的...

    ASP.NET操作echarts

    首先,我们需要在 ASP.NET 项目中引入 ECharts 的 JavaScript 库。通常,这可以通过在 HTML 页面的 `<head>` 标签中添加 ECharts 的 CDN 链接或者将 ECharts 的 js 文件下载到项目中本地引用。例如: ```html ...

    ASP.net实战项目

    ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP.net实战项目ASP...

    ASP.NET 完全入门

    ASP.NET与Windows 2000 Server/Advanced Server的完美组合,为中小型乃至企业级的web商业模型提供了一个更为稳定,高效,安全的运行环境。 正是基于上面的激动人心的理由,我们编写了这样一本书

    ASP.NET程序设计实验报告(期末课程设计)

    同时,实验还引导学生了解如何在ASP.NET环境中创建项目文件,这是构建ASP.NET应用程序的第一步。 实验3则深入到了ASP.NET的基本服务器控件的使用。这部分实验旨在教授学生如何利用ASP.NET提供的服务器控件来增强...

    十天学会ASP.net--我认为ASP.NET比ASP难很多,希望大家做好准备

    在ASP.NET中,编程语言增加了C#,提供了VB.NET、C#、ACCESS和SQL的四种组合。ASP.NET的编程模型更加面向对象,允许更灵活的实现同一效果的方法,但这也使得初学者可能会感到困惑。 【环境配置】学习ASP.NET需要安装...

    ASP.NET MVC 5入门指南(中文PDF+源码)

    ASP.NET MVC 5入门指南 (中文PDF+源碼) 1. ASP.NET MVC 5 - 开始MVC 5之旅 2. ASP.NET MVC 5 - 控制器 3. ASP.NET MVC 5 - 视图 4. ASP.NET MVC 5 - 将数据从控制器传递给视图 5. ASP.NET MVC 5 - 添加一个模型 6. ...

    ASP.NET—015:ASP.NET中无刷新页面实现

    在ASP.NET中,"无刷新页面实现"通常指的是通过 AJAX(Asynchronous JavaScript and XML)技术来更新页面的部分内容,而无需整个页面重新加载,从而提供更流畅的用户体验。 在ASP.NET中,UpdatePanel是实现局部刷新...

    asp.net经典聊天室

    asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典聊天室asp.net经典...

    ASP.Net Core 5.0官方文档.pdf

    ASP.NET core 5.0文档PDF(含目录,共5453页)。摘要: ASP.NET Core 文档及新增内容 ASP.NET 比较 .NET Core 和 .NET Framework 入门新增功能 5.0 版中的新增功能 3.1/3.0/2.2/2.1/2.0/1.1 版中的新增功能 教程Web ...

    asp.net网站模板

    在ASP.NET中,开发者可以通过这样的页面来动态地改变数据库连接字符串、网站主题或者用户权限等设置。 3. `admin_style.aspx`:这可能是管理站点样式的页面,允许管理员控制网站的外观和感觉。在ASP.NET中,样式...

    天轰穿系列教程之-21Asp.Net中的事件(页面事件)

    天轰穿系列教程之-21Asp.Net中的事件(页面事件)天轰穿系列教程之-21Asp.Net中的事件(页面事件)天轰穿系列教程之-21Asp.Net中的事件(页面事件)天轰穿系列教程之-21Asp.Net中的事件(页面事件)天轰穿系列教程之-21Asp...

Global site tag (gtag.js) - Google Analytics