Cookie

来源:互联网 发布:淘宝认可正规进货凭证 编辑:程序博客网 时间:2024/05/22 10:25

1:什么是Cookie

Cookie 是存储在客户端计算机上的文本文件,并保留了各种跟踪信息。具体查看浏览器的Cookies可以参考:

http://blog.unvs.cn/archives/explorer-cookies-ie-chrome-firefox.html

http://jingyan.baidu.com/article/335530da8c240719cb41c33b.html?st=2&os=0&bd_page_type=1&net_type=2;

比如我们访问了某个网站之后,下次访问登录时,登录界面的用户名已经填写。相类似功能的都可用Cookies技术实现.


2:怎么创建Cookies

第一种方法:在服务器端创建Cookies。以Java为例。通过javax.servlet.http.Cookie类可以创建一个Cookie。

它的构造方法为:Cookie(java.lang.String name,java.lang.String value)但是在创建Cookie时需要注意name 参数

不能为逗号、分号、空格符,且不能以美元符($)开头。且Cookie的name 属性一旦定义就不可以改变。原始API为下文:

The name must conform to RFC 2109. That means it can contain only ASCII alphanumeric characters andcannot contain commas, semicolons, or white space or begin with a $ character. The cookie's name cannot be changed after creation.

服务器端将Cookie发往客户端的代码如下:HttpServletResponse.addCookie(javax.servlet.http.Cookie)

服务器端从客户端请求获取Cookie的代码如下: HttpServletRequest.getCookies()

第二种方法:在浏览器端通过JS实现。代码如下

function setCookie(c_name,value,expiredays){var exdate=new Date()exdate.setDate(exdate.getDate()+expiredays)document.cookie=c_name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString())}
其中第三个参数expiredays表示创建的该Cookie多久后失效。比如setCookie("testKey","testValue",new Date().getSeconds+5)。

表示该Cookie在5秒后就失效。


3:Cookie的其它可选属性。

Cookie(java.lang.String name,java.lang.String value)。通过该构造方法创建的Cookie只有name 和value 属性。

但我们还可以通过其它方法来给Cookie添加属性。就像在第二种使用JS创建Cookie的方法中我们还给Cookie提供了

过期时间。

实际上Cookie还有一些其它的可选属性。但官方API提出由于某些浏览器在处理这些可选属性的时候还存在bug,所

以我们应该谨慎的使用这些属性。

那么下面我们就来看看有哪些属性。

get/setComment(java.lang.String comment):给该Cookie添加注解,一般最多也就开发人员调试用的比较多。

其它的不经常用到该属性。

get/setMaxAge(int expiry):该Cookie在expiry秒后失效,以秒为单位。

get/setPath(java.lang.String url):当浏览器再次发起对该URL的请求时,自动将该Cookie加到请求中,

即将该Cookie发送给服务器。举个例子:比如在第一次访问A网站登录页面时,服务器创建了Cookie,

且将该Cookie的path属性设置为登录页面的URL。那么之后当用户再次访问A网站登录页面时浏览器自动就将该

Cookie放在请求中,发送给服务器。而在访问其它页面时不会发送该Cookie。通过这个机制,我们可以设计一

个专门记录用户登录信息的Cookie。这样每当访问登录页面时服务器读取该Cookie,将解析出来的用户名信息

放入返回给浏览器登录页面的用户名输入栏。这样就用户就不用每次登录A网站时都需要重新输入用户名了。

get/setDomain(java.lang.String pattern):和set/getPath(**)方法相似,表示在设置域名下的所有应用共享该Cookie。

可理解成将Cookie的作用于扩大了。

get/setSecure(boolean flag):如果设置成True:表示该Cookie只能通过安全协议传输。比如https、 ssl

get/setValue(String value):表示拿到或重新设置该Cookie 的value值

getName(): 就如前面所说,Cookie一经创建,他的name 就不可再改变,所以也没有对应的setName(newName)方法。


4:Cookie的修改与删除

我们可以通过setValue(String name)方法来修改某个Cookie的值,但我们该怎么删除某个Cookie呢?通过设置它的过期日期。

在服务器端我们通过setMaxAge(0)方法是该Cookie立即失效(参数为0)。在浏览器端删除某个Cookie的方法在之前用JS创建

Cookie的例子中已经写过,就不在重复代码了。只需将过期日期+5去掉就行了。


1 0
原创粉丝点击