cookie和session

因为HTTP协议是无状态的,为了记录用户状态信息,需要采取一些措施。

session,会话,是一种服务端和客户端之间的状态关联。

服务端使用session探知分辨客户端信息。第一次创建session的时候,服务端会把session id发到客户端,客户端把这个id记录在本地cookie里,以后请求的时候带着这个session id。

(如果客户端禁用cookie,则可以使用url重写技术,在url后面附加上诸如sid=xxxx这样的参数,方便服务器识别用户)

所以session的实现需要客户端和服务端的配合。在服务端,服务器需要存储session id和对应的用户数据。

客户端需要从服务端获取session id,以后请求的时候带着这个发出。

综上所述,cookie是客观存在的,session是一个。

session的实现要依赖cookie。session的实现方式(后端存储,设置cookie等)有很多种方法

 

关于cookie的设置,是通过服务器返回的 Set-Cookie 字段来设置的,这个字段的形式如下:

Set-Cookie: value[; expires=date][; domain=domain][; path=path][; secure]

可以看到,在这里能够设置失效日期,应用cookie的url,标志通过ssh,https生成等

之后客户端请求的时候,请求字段中包含的cookie如下:

Cookie: value

 

cookie的缺点有:给请求增加流量,存储在客户端,有安全性问题(除非https),大小限制在4kb等。

如果服务端向客户端返回了加密cookie,服务端能够验证这个cookie,那么就能提升cookie的安全性

 

posted @ 2018-03-06 21:14  geeklove  阅读(95)  评论(0编辑  收藏  举报