码迷,mamicode.com
首页 > 其他好文 > 详细

cookie & session

时间:2016-01-14 15:45:24      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:

Cookie

simple introduction

由于http是无状态的,因此服务器和客户端建立起`个性的`连接是不可以的,所以使用cookie机制。来标识唯一的用户,这样服务器就可以有选择的给客户端response内容

cookie存在客户端的内存中或者特定的文件中,这由服务器设定,内容就是一段文本。

cookie的有效期:maxAge,当此值为正数时,cookie将持久存在client特定的文件中,直到超过maxAge的时间cookie才会失效。如果maxAge为负数,则表示该Cookie仅在本浏览器窗口以及本窗口打开的子窗口内有效,关闭窗口后该Cookie即失效

cookie建立和使用过程:

技术分享

step1:client请求

step2: 当服务器返回给客户端一个http响应信息时,其中如果包含Set-Cookie这个头部时,意思就是指示客户端建立一个cookie。

step3: 在后续的http请求中自动发送这个cookie到服务器端,直到这个cookie过期。

step4: 请求回应

除了cookie,客户端可以将需要发送的数据包含在请求的url中,包括常见的GET、POST

cookie安全性

为了保证各自网站指定操作自己的cookie,所以cookie是不可跨域名的,也就是说baidu.com的cookie在访问www.baidu.com只能携带baidu.com的cookie。另外http协议在传输信息的时候是明文的,所以如果在明文下传递存在cookie中的敏感信息是和不安全的,此时可以设定Cookie的secure属性为true,必须使用https传输信息,当然包括cookie

Session

simple introduction

由于HTTP协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是Session.典型的场景比如购物车

session在建立在服务端的用户的状态信息,但传送个客户端的是一个session id(一段字符串),客户端随后的请求时将携带这个session id,服务端就可以通过这个session id查到的用户状态信息。Session的使用比Cookie方便,但是过多的Session存储在服务器内存中,会对服务器造成压力。有大量的请求时,为防止内存溢出,服务器会把长时间内没有活跃的Session从内存删除。这个时间就是Session的超时时间。如果超过了超时时间没访问过服务器,Session就自动失效了。

 

session需要cookie:有因为HTTP是无状态的,所以session不知道请求是不是来自同一客户端,此时服务端会想客户端浏览器发送一个Cookie,它的值就是session id,服务器通过这个cookie来识别是否时同一用户。由于这个cookie的maxAge为-1,存在内存中,所以一般浏览器关闭session id就会丢失。

如果Cookie别禁了:一般利用URL地址重写,将session id写在URL中传递给服务器,另外还有表单隐藏技术。

 

Cookie与Session的区别

cookie存储在客户端本地,session存储在服务器上

session比cookie安全些

session一般用来跟踪回话,cookie一般保存用户喜好或者保存用户名密码

session可存放在内存、文件、数据库、甚至一个集群中。#django默认是存在数据库中

Cookie有大小限制,一般最大3K

session对cookie有依附关系,session id会存在cookie中(cookie enable),然后写在http头部传给服务端。

cookie & session

标签:

原文地址:http://www.cnblogs.com/wxl-dede/p/5130244.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!