Cookie的应用

来源:互联网 发布:iphone6s蜂窝数据快捷 编辑:程序博客网 时间:2024/05/23 15:28

一、Cookie的概述

(1)cookie的最大好处使用的就是"Remember Me"的服务。
(2)cookie保存在客户端,如果用户禁用了cookie的话,可能会存在一些问题,所以在设计的时候要注意(判断cookie是否为null)
(3)需要cookie的原因跟需要session一样,因为http协议是无状态的,每次都是新的页面,不会保存任何信息,而cookie的话,会(4)保存在客户端的电脑上,那么到时需要用的时候,可以利用后台的服务器端调用,也可以就用客户端来进行调用。
(5)Cookie只是一段文本,所以它只能保存字符串。而且浏览器对它有大小限制以及 它会随着每次请求被发送到服务器,所以应该保证它不要太大。 Cookie的内容也是明文保存的,有些浏览器提供界面修改,所以, 不适合保存重要的或者涉及隐私的内容。

Cookie的限制:
大多数浏览器支持最大为 4096 字节的 Cookie。由于这限制了 Cookie 的大小,最好用 Cookie 来存储少量数据,或者存储用户 ID 之类的标识符。用户 ID 随后便可用于标识用户,以及从数据库或其他数据源中读取用户信息。 浏览器还限制站点可以在用户计算机上存储的 Cookie 的数量。大多数浏览器只允许每个站点存储 20 个 Cookie;如果试图存储更多 Cookie,则最旧的 Cookie 便会被丢弃。有些浏览器还会对它们将接受的来自所有站点的 Cookie 总数作出绝对限制,通常为 300 个。


Cookie中的属性:(网上参考)

name: 每个cookie由一个唯一的名称代表,这个名称可以包含字母、数字、下划线。cookie的名称是不分大小写,所以mycookie和MyCookie是一样。但考虑到服务器端语言可能区分大小写,建议定义和使用时还是区分大小写。

value: 保存在cookie中的字符串值。这个值在存储之前必须使用encodeURIComponent()对其进行编码,以免丢失数据或占用了cookie。注意:cookie名字和值加起来的字节数不能超过4095字节,也即4KB。

domain: 出于安全考虑,网站不能访问由其他域所创建的cookie。创建cookie以后,域的信息会作为cookie的一部分存储下来。关于域,这里给一个例子,如http://ibm.com/foo/index.aspx, 它的域为:ibm.com。
path: cookie的另一个安全特征,限制对web服务器上特定目录的访问。即控制哪些访问能触发发送.例如请求的地址是上面的url,如果path=/foo,这个cookie就会被发送,但是path为其他的话,该cookie会被忽略。
expires: cookie的过期时间。
secure: 一个true/false值,用于表示cookie是否只能从安全网站(使用SSL和https协议的网站)中访问。如果这个值被设置为true


 
Cookie的基本步骤:(网上参考)
浏览器对于Web服务器应答包头中Cookie的操作步骤:
a. 从Web服务器的应答包头中提取所有的cookie。
b. 解析这些cookie的组成部分(名称,值,路径等等)。
c. 判定主机是否允许设置这些cookie。允许的话,则把这些cookie存储在本地。
浏览器对Web服务器请求包头中所有的cookie进行筛选的步骤:
a. 根据请求的url和本地存储cookie的属性,判断那些cookie能被发送给Web服务器。
b. 对于多个cookie,判定发送的顺序。 
c. 把需要发送的cookie加入到请求http包头中一起发送。


通过前面的内容,我们了解到Cookie是用于维持服务端会话状态的,通常由服务端写入,在后续请求中,供服务端读取。 下面本文将按这个过程看看Cookie是如何从服务端写入,最后如何传到服务端以及如何读取的。

二、Cookie在ASP.Net中的基本用法:
Cookie的写、读过程:
在Asp.net中,读写Cookie是通过使用HttpCookie类来完成的,它的定义如下:

Cookie写入浏览器的过程:我们可以使用如下代码在Asp.net项目中写一个Cookie 并发送到客户端的浏览器

Asp.net获取Cookie的过程:我们可以使用如下代码在Asp.net项目中读取一个Cookie

删除Cookie:其实就是在写Cookie时,设置Expires为一个【早于现在时间的时间】。也就是:设置此Cookie已经过期, 浏览器接收到这个Cookie时,便会删除它们。



 三、关于Cookie的用途
防止网上重复投票;
通过cookie实现自动登陆
单点登陆 ( Single Sign On, SSO),是目前比较流行的企业业务整合的解决方案之一. 简单的说, 就是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。 
这3个应用,原理也很简单,大抵有2种方案,如下:
    1.前台Js检查应用cookie
            function setHistory(){
                if(getCookie("HistoryCookie") == null){
                    setCookie("HistoryCookie", "I've come here.", new Date(Date.parse("May 4, 2009")));
                }
                else{
                    //alert("welcome!");
                }
            }
          
 


    2.服务器端检查应用cookie
            if (Request.Cookies["HistoryCookie"] != null && !string.IsNullOrEmpty(Request.Cookies["HistoryCookie"].Value))
            {
                divHistory.InnerHtml = "You have come here before!";
            }
            else
            {
            }
 
这2种方案可以单独使用,也可以结合使用。但存在一个共同的缺陷是:如果客户端禁用了cookie或者删除了cookie,就达不到预期目标。
    以上就是我总结的一些Cookie的简单用法,参考了网上的一些资料,还有很多没有总结的东西,希望大家谅解!