Cookie对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Cookie对象相关的知识,希望对你有一定的参考价值。

参考技术A

Cookie是浏览器提供的一种技术,通过服务器的程序能将一些只须保存在客户端,或者在客户端进行处理的数据,放在本地的计算机上,不需要通过网络传输,因而提高网页处理的效率,并且能够减少服务器的负载,但是由于Cookie是服务器端保存在客户端的信息,所以其安全性也是很差的。例如常见的记住密码则可以通过cookie来实现。

有一个专门操作Cookie的类javax.servlet.http.Cookie。随着服务器端的响应发送给客户端,保存在浏览器。当下次再访问服务器时把Cookie再带回服务器。
有一个专门操作Cookie javax.servlet.http.Cookie。随着服务器端的响应发送给客户端,保存在浏览器.当下次再访问服务器时把Cookie再带回服务器.

Cookie的格式:键值对用“="链接,多个键值对间通过”;"隔开。

通过new Cookie("key","value");来创建一个Cookie对象,要想将Cookie随响应发送到客户端,需要先添加到response对象中,response.addCookie(cookie);此时该cookie对象则随着响应发送至了客户端。在浏览器上可以看见。

在服务器端只提供了一个getCookies()的方法用来获取客户端回传的所有cookie组成的一个数组,如果需要获取单个cookie则需要通过遍历,getName()获取Cookie的名称,getValue()获取Cookie 的值。

除了Cookie的名称和内容外,我们还需要关心一个信息,到期时间,到期时间用来指定该cookie何时失效。默认为当前浏览器关闭即失效。我们可以手动设定cookie的有效时间(通过到期时间计算),通过setMaxAge(int time);方法设定cookie的最大有效时间,以秒为单位。

负整数

一般不建议使用中文

Cookie的setPath设置cookie的路径,这个路径直接决定服务器的请求是否会从浏览器中加载某些cookie。

情景一:当前服务器下任何项目的任意资源都可获取Cookie对象

情景二:当前项目下的资源可获取Cookie对象(默认不设置Cookie的path)

情景三:指定项目下的资源可获取Cookie对象

情景四:指定目录下的资源可获取Cookie对象

如果我们设置path,如果当前访问的路径包含了cookie的路径(当前访问路径在cookie路径基础上要比cookie的范围小) cookie就会加载到request对象之中。
cookie的路径指的是可以访问该cookie的顶层目录,该路径的子路径也可以访问该cookie。

总结:当访问的路径包含了cookie的路径时,则该请求将带上该cookie;如果访问路径不包含cookie路径,则该请求不会携带该cookie。

cookie超过最大长度限制如何解决

1、首先前端一般是以对象的形式存数据,现在以对象的形式说怎么存,先声明一下需要存的对象。

2、接着存这个对象的数据,JSON.stringify是把数据转换成字符串的形式。

3、然后取对象数据,JSON.parse是把字符串数据转换为 JavaScript 对象。

4、最后如果想要删除某个对象数据,可以这样操作; localStorage.removeItem("logindata");。

5、到这里使用localstorage存数据的方法就完成了。

参考技术A 一、浏览器允许每个域名所包含的cookie数:
  Microsoft指出InternetExplorer8增加cookie限制为每个域名50个,但IE7似乎也允许每个域名50个cookie。
  Firefox每个域名cookie限制为50个。
  Opera每个域名cookie限制为30个。
  Safari/WebKit貌似没有cookie限制。但是如果cookie很多,则会使header大小超过服务器的处理的限制,会导致错误发生。
  注:“每个域名cookie限制为20个”将不再正确!
二、当很多的cookie被设置,浏览器如何去响应。
  除Safari(可以设置全部cookie,不管数量多少),有两个方法:
  最少最近使用(leastrecentlyused(LRU))的方法:当Cookie已达到限额,自动踢除最老的Cookie,以使给最新的Cookie一些空间。InternetExplorer和Opera使用此方法。
  Firefox很独特:虽然最后的设置的Cookie始终保留,但似乎随机决定哪些cookie被保留。似乎没有任何计划(建议:在Firefox中不要超过Cookie限制)。
三、不同浏览器间cookie总大小也不同:
  Firefox和Safari允许cookie多达4097个字节,包括名(name)、值(value)和等号。
  Opera允许cookie多达4096个字节,包括:名(name)、值(value)和等号。
  InternetExplorer允许cookie多达4095个字节,包括:名(name)、值(value)和等号。
注:多字节字符计算为两个字节。在所有浏览器中,任何cookie大小超过限制都被忽略,且永远不会被设置。
四、总结表格

以下就是关于各浏览器之间对cookie的不同限制:

IE6.0

IE7.0/8.0

Opera

FF

Safari

Chrome

cookie个数:

每个域为20个

每个域为50个

每个域为30个

每个域为50个

没有个数限制

每个域为53个

cookie总大小:

4095个字节

4095个字节

4096个字节

4097个字节

4097个字节

4097个字节

而去年12月份国内浏览器份额如下图:

ie内核浏览器占主流地位,且ie6仍占有相当大的市场份额,所以在程序中应当使用少于20个cookie,且不大于4k

以上是关于Cookie对象的主要内容,如果未能解决你的问题,请参考以下文章

Cookie对象

Cookie对象

jsp内置对象之Cookie对象

session对象和cookie对象的区别

cookie超过最大长度限制如何解决

JSP中的Cookie对象