了解cookie

Posted lude1994

tags:

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

1.cookie数据会自动在Web浏览器和Web服务器之间传输的,因此服务端脚本就可以读,写存储在客户端的cookie值。

2.在javascript中使用cookie不会采用任何加密机制,因此是不安全的。但是,通过https来传输cookie数据是安全的,这和https的协议有关。

3.cookie的API中根本没有提供诸如查询,设置,删除cookie的方法,所有这些操作都要通过以特殊格式的字符串形式读写Document对象的cookie属性来完成。每个cookie的有效期和作用域,都可以通过cookie属性来分别制定。这些属性也是通过在同一个cookie属性上以特殊格式的字符串来特定的。

4.在js中使用cookie,首先需要确保cookie是否启用:{

  a.通过检测navigator.cookieEnabled=true,则为cookie启用状态(但是,只具备‘当前浏览会话生命周期’的非持久化cookie仍然是启用的

  b.但是,navigator.cookieEnabled=true 不是所有的浏览器都支持这个属性,因此可以通过读,写和删除测试cookie数据来测试是否支持cookie。

}

5.除了name和value(及键值对),cookie还有一些可选的属性控制cookie的有效期作用域。cookie默认的有效期很短暂,它只能维持在Web浏览器的会话期间,一旦用户关闭浏览器(是关闭浏览器,不是关闭单个窗口),cookie保存的数据就丢失了

6.如果想要延长cookie的有效期,可以通设置max-age属性但是必须明确告诉浏览器cookie的有效期是多长(单位是秒)。一旦设置了有效期,浏览器就会将cookie数据存储在一个文件夹中,并且直到过了指定的有效期才会删除该文件。

7.cookie的作用域是通过文档源文档路径来确定的,该作用域通过cookie的path和domain属性也是可以配置的。默认情况下,cookie和创建它的web页面有关,并对该web页面以及和该web页面同目录或子目录的其他的web页面可见。比如:web页面www.example.com/catalog/index.html页面创建一个cookie,那么www.example.com/catalog/order.html和www.example.com/catalog/widge/index.html都能访问访问那个创建的cookie,因为是创建cookie的页面的通过目录或子目录下的页面。

8.若想要整个网站都能够使用相同的cookie 值。可以设置cookie的路径(设置cookie的path属性)。这样一来,来自同一个web服务器的web页面,只要URL是以指定的路径前缀开始的,都可以分享cookie。比如http://www.example.com/catalog/index.html页面创建一个cookie,并且将路径设置为"/catalog"(path="/catalog"),那么该cookie对于http://www.example.com/catalog/路径下的文件和页面都可以访问cookie。同理,设置‘/’路径,那么http://www.example.com/下的文件都能访问。

9.将cookie的路径设置成‘/’ ,等于是让cookie和localStorage拥有同样的作用域,同时当请求该站点任何一个Web页面的时候,浏览器都必须将cookie的名字和值传递给服务器。但是,要注意的是,cookie的path属性不能被用作访问控制机制。如果一个web页面想要读取同一站点其他页面的cookie,只要简单的将其他页面以隐藏<iframe>的形式加载进来,随后读取对应文档的cookie就可以了。

10.cookie的作用域默认由文档源限制。但是有些大型网站想要子域之间能够共享cookie如fanyi.baidu.com,yinyue.baidu.com,这个时候就需要通过设置cookie的domain属性来达到目的。如果catlog.exmple.com域下的一个页面创建了一个cookie,并将其path属性设置成‘/’,其domain属性设置成‘./example.com‘,那么,该cookie将对所有catlog.example.com, order.example.com以及任何其他.example.com域下的任何其他服务器都可见。如果没有为一个cookie设置域属性,那么domain属性的默认值当前web服务器的主机名。要注意的是,cookie的域只能设置为当前服务器的域。

11.cookie的secure属性,它是一个布尔类型的属性,用来表明cookie的值以何种形式通过网络传递。cookie默认是不以不安全的形式(通过普通的,不安全的HTTP连接)传递的。而一旦cookie被标识为“安全的”,那就只能当浏览器和服务器通过HTTPS或者其他安全的协议连接的时候才能传递他。

保存cookie:待续

 


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

了解cookie

深入了解Cookie

因改漏洞而引申了解的Cookie机制!

cookie和session了解吗

深入了解Cookie和Session

全面了解Cookie