Cookie就是所谓的" 小甜饼" ,他最早出现是在Netscape Navigator 2.0中。Cookie其实就是由Web服务器创建的、将信息存储在计算机上的文件。那么为什么Web服务器要在客户机上面创建如此文件?这是因为当客户机发送一个请求到WEB服务器时(譬如准备浏览页面时),无论此客户机是否是第一次来访,服务器都会把它当作第一次来对待,WEB服务器所做的工作只是简单的进行响应,然后就关闭与该用户的连接。这样处理过程所带来的缺点时显而易见的。自从网景公司开发出Cookie以后,就可以利用Cookie来保存用户的识别信息。Cookie的作用可以记录了您在该站点上曾经访问过的页面,由此帮助您下次访问该站点时自定义查看。Cookies 也可以存储个人可识别信息。个人可识别信息是可以用来识别或联系您的信息,例如姓名、电子邮件地址、家庭或工作地址,或者电话号码。然而,网站只能访问您提供的个人可识别信息。例如,除非您提供电子邮件名称,否则网站将不能确定您的电子邮件名称。另外,网站不能通过Cookie来访问计算机上的其他信息。当然除非你提供。那么Cookie到底存放在什么地方?如果机器的系统是视窗98且安装在" C" 盘中,那么Cookie存放在" C:\Windows\Cookies" 目录中;如果机器系统是视窗2000且安装在" C" 盘中,那么Cookie存放在" C:\Documents and Settings\Administrator\Cookies" 目录中。了解了Cookie这么多知识,我们还是来了解一下本文的重点-- C#是如何进行Cookie方面编程的。主要内容有二点:其一是 C#是如何写入Cookie;其二是 C#是如何访问自己写入的Cookie。

一、本文介绍的程序设计和运行的软件环境:

  1. 微软公司视窗2000服务器版
  2. .Net FrameWork SDK Beta 2

C#进行Cookie方面编程是通过ASP.NET页面来实现的。

二、C#如何写入Cookie:

为了写入Cookie,他的步骤主要有三步,具体如下:

  1. 首先就要创建一个HttpCookie对象,通过这个对象来构造一个Cookie,这个对象的名称就是以后产生的Cookie名称。具体如下代码:

    HttpCookie cookie = new HttpCookie ( " 用户定义的Cookie名称" ) ;
  2. 然后对创建的HttpCookie对象的" Value" 属性分配一个字符串值," Value" 的值就是后来产生的Cookie的值。具体代码如下:
    cookie.Value = "用户给Cookie赋值" ; 如果你想写入的Cookie数值不是一个简单的字符串,而是一个复杂的数据类型,我们知道这些数据类型是不能直接存贮到Cookie中的,因为Cookie中只能存贮字符串。但你可以通过一个变通的方法,就是把这个复杂的数据类型转换成多个字符串,然后把这多个字符串同时赋值给产生的Cookie值,这样Cookie中的内容就丰富了,以后利用Cookie完成的功能也强大了。这时你可能就会明白为什么当你浏览Web服务器,Web服务器会知道你什么时候曾经浏览过,并且曾经待过多长时间等信息了。因为这些信息已经存储到你第一次浏览页面时,Web服务器产生的Cookie中去了。下列代码是把多个字符串存储到Cookie的例子:

    cookie [ " 姓名" ] = " 王天";
    cookie [ " 性别" ] = " 男";
    cookie [ " 年龄" ] = " 26";

    Cookie有临时的,也有永远的。永久 Cookie 以文件形式存储在计算机上,关闭 Internet Explorer 时仍然保留在计算机上。再次访问该站点时,创建该 Cookie 的网站可以读取。在具体的编程时候,是在写入此Cookie的时候,设定Cookie的生命周期,具体如下代码:

    DateTime dtNow = DateTime . Now ;
    TimeSpan tsMinute = new TimeSpan ( 0 , 1 , 0 , 0 ) ;
    cookie . Expires = dtNow + tsMinute ;

    以上代码是设定产生的Cookie的生命期为" 一个小时" ,你可以通过修改" TimeSpan" 属性来设定产生Cookie的具体生命期。

  3. .最后调用" Response.Cookies" 对象的" Add()" 方法,加入此对象,这样就可以产生一个Cookie了。具体代码如下:
    Response . Cookies . Add ( cookie ) ;
    下列代码就是在 C#写入Cookie的完整代码(Write.aspx):
    <% @ language = "C#" %>
    <script runat = "server" >
    void WriteClicked ( Object Sender , EventArgs e )
    {
    //创建一个HttpCookie对象
    HttpCookie cookie = new HttpCookie ( NameField . Text ) ;
    //设定此cookies值
    cookie . Value = ValueField . Text ;
    //设定cookie的生命周期,在这里定义为一个小时
    DateTime dtNow = DateTime . Now ;
    TimeSpan tsMinute = new TimeSpan ( 0 , 1 , 0 , 0 ) ;
    cookie . Expires = dtNow + tsMinute ;
    cookie [ "姓名" ] = "王天" ;
    cookie [ "性别" ] = "男" ;
    cookie [ "年龄" ] = "26" ;
    //加入此cookie
    Response . Cookies . Add ( cookie ) ;
    Response . Write ( NameField . Text + "Cookie创建完毕 <br > <hr > " ) ;
    }
    </script >
    <html >
    <body >
    <h3 > 在 C#页面中创建cookie </h3 >
    此cookie的生命周期定义为一个小时
    <form runat="server">
    Cookie名称:<asp:textbox id = "NameField" runat = "server" /> <br >
    Cookie的值:<asp:textbox id = "ValueField" runat = "server" /> <br >
    <asp:button text = "创建Cookie" onclick = "WriteClicked" runat = "server" /> <br >
    </form >
    </body >
    </html >

下图是上面代码运行后的界面:


图01:C#写入Cookie的程序运行界面

当然上面的代码产生的Cookie在内容上面有点单调了。其实对于内容十分丰富的Cookie来说,他还有许多属性,充分的利用这些属性,才可以利用了Cookie的强大功能。下表是Cookie的一些常用的属性:

属性 描述
Domain 设定/获得Cookie应属于的域名。一旦设定了此属性,则只限定于此域名的Web服务器访问此Cookie。可以设定为"ccw.com.cn"
Path 设定/获得Cookie应属于的路径,如果设定后,则访问此Cookie的Web页面则被限定在此路径里面。其他路径的Web页面则不能访问。
Secure 设定/获得一个标识来表明利用HTTP协议是否能够安全的传输Cookie到客户端的浏览器。
HasKeys 表明是否此Cookie是否是多个字符串组成的。

在写入Cookie的时候,最大限度的利用这些属性,对于最大程度的利用写入的Cookie是十分重要的。

三、C#是如何读取已产生的Cookie:

读取指定的Cookie比起写入Cookie要来的容易的多了,只需要使用" Request.Cookies" 对象就可以完成。下面是读取指定Cookie名称的方法:

HttpCookie cookie = Request.Cookies [ " Cookie的名称" ] ;

下面是显示已经读取了的Cookie的数值:

Response.Write (cookie . Value . ToString ( ) ) ; 掌握了上面的要点,读取Cookie就显得非常容易了,下列是读取Cookie的程序代码(read.aspx): <% @ language = "C#" %>
<script runat = "server" >
void ReadClicked ( Object Sender , EventArgs e )
{
//得到用户输入的cookie名称
String strCookieName = NameField . Text ;
//获得cookie
HttpCookie cookie = Request.Cookies [ strCookieName ] ;
//确定是否存在用户输入的cookie
if ( null == cookie ) {
Response.Write ( "没有发现指定的cookie <br > <hr > " ) ;
}
else {
//找到指定的cookie,显示cookie的值
String strCookieValue = cookie . Value . ToString ( ) ;
Response.Write ( strCookieName + " cookie 的值为: <b > "
+ strCookieValue + " </b > <br > <hr > " ) ;
}
}
</script >
<html >
<body >
在 C#页面中读取指定Cookie值<br >
<form runat = "server" >
请输入要读取的Cookie名称:<asp:textbox id = "NameField" runat = "server" />
<asp:button text = "读取cookie" onclick = "ReadClicked" runat = "server" />
</form >
</body >
</html >

下图是上面代码运行后的界面:


图02:读取指定Cookie的值的程序运行界面

四、总结:

至此我们已经介绍了用 C#进行Cookie编程的大部分内容。其实Cookie在互联网上有着比较大的作用。譬如它可让WEB站点跟踪特定访问者的访问次数、最后访问时间和访问者进入站点的路径等;还可告诉在线广告商广告被点击的次数,从而可以更精确的投放广告;它可让用户在不键入密码和用户名的情况下进入曾经浏览过的一些站点;最为重要的是它可帮助站点统计用户资料以实现个性化服务等等。掌握了 C#的Cookie编程,就可以在程序中充分利用Cookie来实现上面的这些功能了。不信你试一试。

转载于:https://www.cnblogs.com/skyshenwei/archive/2010/01/14/1647675.html

C#中的cookie编程相关推荐

  1. 闲聊flask web编程中的cookie

    在web编程中,cookie和session的区别于联系并不是一个很容易搞清楚的事情.在我从事后端工作的很长时间里,对于他们的应用也并不多,因为大多数时间都是在编写API接口供其他系统调用,而cook ...

  2. ASP.NET中Cookie编程的基础知识

    一.简介 Cookie 为 Web 应用程序保存用户相关信息提供了一种有用的方法.例如,当用户访问您的站点时,您可以利用 Cookie 保存用户首选项或其他信息,这样,当用户下次再访问您的站点时,应用 ...

  3. Cookie编程入门篇

    Cookie就是所谓的" 小甜饼" ,他最早出现是在Netscape Navigator .0中.Cookie其实就是由Web服务器创建的.将信息存储在计算机上的文件.那么为什么W ...

  4. Java SE 6 中实现 Cookie 功能

    来源:http://www.study-code.com/java/j2se/66422.htm 头一段时间,为了在 Java 中实现 Cookie 的功能,看了若干规范文档,写了大量的代码,才勉强将 ...

  5. Cookie编程基础:检查浏览器是否接受Cookie

    Cookie编程基础:检查浏览器是否接受Cookie 提要:一种确定浏览器是否接受 Cookie 的方法是先编写一个 Cookie,然后再尝试读取这个 Cookie.如果不能读取这个Cookie,则可 ...

  6. 前端安全中的 cookie 防护 - 加速乐(jsl)

    今日网站 我测试的这个站不太好发,所以我找了找另一个大家将就一下 aHR0cHM6Ly93d3cuY252ZC5vcmcuY24vZmxhdy9saXN0Lmh0bQ== 加密分析 看标题就知道本次文 ...

  7. [.NET] 《Effective C#》快速笔记 - C# 中的动态编程

    <Effective C#>快速笔记 - C# 中的动态编程 静态类型和动态类型各有所长,静态类型能够让编译器帮你找出更多的错误,因为编译器能够在编译时进行大部分的检查工作.C# 是一种静 ...

  8. javascript函数式_JavaScript中的函数式编程—结合实际示例(第1部分)

    javascript函数式 by rajaraodv 通过rajaraodv JavaScript中的函数式编程-结合实际示例(第1部分) (Functional Programming In Jav ...

  9. Python中的元编程:一个关于修饰器和元类的简单教程

    作者 | Saurabh Kukade 译者 | 刘畅 出品 | AI科技大本营(ID:rgznai100) 最近,作者遇到一个非常有趣的概念,它就是用 Python 进行元编程.我想在本文中分享我对 ...

最新文章

  1. (转)php-cli模式学习(PHP命令行模式)
  2. 关于URL指向的icon的存储问题
  3. twitter集成第三方登录是窗口一直出现闪退的解决方法
  4. 关于计算机网络的未来综述,计算机网络综述
  5. 第四章、项目整合管理【PMP】
  6. Python基础学习总结(六)
  7. Centos运行Mysql因为内存不足进程被杀
  8. pdf转html插件~~~pdf2htmlEX安装,配置及使用
  9. DXUT扩展之摄像机
  10. python是干什么的-python干嘛用
  11. ZOJ-1010 奇偶剪枝
  12. 在Eclipse中配置DOS(cmd)窗口
  13. 蚂蚁课堂视频笔记思维导图-3期 七、互联网高并发解决方案
  14. 相干性(Coherence)和相关性(Correlation)的区别和联系
  15. 神经网络长什么样不知道?这有一份简单的 pytorch可视化技巧
  16. 陈年咖啡豆是什么?陈年咖啡能喝吗?陈年咖啡有什么特别的?
  17. Vue实现视频播放(video.js)
  18. 如何去掉a标签的下划线 各种样式详解
  19. 计算机鸣响的十大故障,电脑各种开机响声引起的电脑故障解析大全
  20. 冲刺80万辆!明年再翻倍!行泊一体赛道「激活」市场新引擎

热门文章

  1. STL源码学习(一)迭代器概念与traits编程技法
  2. 用java程序完成从kafka队列读取消息到sparkstreaming再从sparkstreaming里把数据导入mysql中
  3. VC如何在单文档里显示对话框
  4. 关于单点登录中同一浏览器session信息共享的又一解决办法
  5. Uart接口的详细解释
  6. Windows / Ubuntu操作系统下Pixhawk原生固件PX4的编译方法
  7. Nginx之进程间的通信机制-Channel
  8. Socket技术详解(一篇就够了)
  9. MySQL DELETE 语句的一个简单介绍
  10. Leetcode题库 144.二叉树的前序遍历(递归 C实现)