深聊cookie

Posted by monkey-yu on December 26, 2018 | 浏览量: -

第一篇博客,试试水。

前言

不废话了,直接开始。

正文

1.cookie原理

第一次访问网站的时候,浏览器发出请求,服务器响应请求后,会将cookie放入到响应请求中,在浏览器第二次发请求的时候,会把cookie带过去,服务端会辨别用户身份,当然服务器也可以修改cookie内容。

2.cookie不可跨域

打开百度的网页,

1
document.cookie='myname=zhaoyu;path=/;domain=.baidu.com';

cookie里可以看到这条值;

如果后面的domain=.google.com. 不会存在cookie里。

真正能把cookie设置上去的是domain。如果未指定domain,则会存在写这条语句的这个域下。

3.value

由于cookie规定是名称/值是不允许包含分号,逗号,空格的,所以为了不给用户带来麻烦,考虑服务器的兼容性,任何存储cookie的数据都应该被编码。

4.domain

同一个域名下的二级域名也是不可以交换使用cookie的。

5.path

path这个属性默认是’/’,这个值匹配的是web的路由。

注意:当你路径设置成/blog的时候,其实它会给/blog、/blogabc等等的绑定cookie。

6.cookie的有效期

Expires属性,一般浏览器的cookie都是默认储存的,当关闭浏览器结束这个会话的时候,这个cookie也就会被删除,这就是上图中的——session(会话储存)。

Max-Age,是以秒为单位的,Max-Age为正数时,cookie会在Max-Age秒之后,被删除,当Max-Age为负数时,表示的是临时储存,不会生出cookie文件,只会存在浏览器内存中,且只会在打开的浏览器窗口或者子窗口有效,一旦浏览器关闭,cookie就会消失,当Max-Age为0时,又会发生什么呢,删除cookie,因为cookie机制本身没有设置删除cookie,失效的cookie会被浏览器自动从内存中删除,所以,它实现的就是让cookie失效。

7.secure

当这个属性设置为true时,此cookie只会在https和ssl等安全协议下传输

8.HttpOnly

这个属性是面试的时候常考的,如果这个属性设置为true,就不能通过js脚本来获取cookie的值,能有效的防止xss攻击。

9.关于js操作cookie

10.服务端如何去设置cookie

服务端就是通过setCookie来设置cookie的,注意点,要设置多个cookie时,得多写几个setCookie,我们还可以从上图看到,请求可以携带cookie给后端。