一、为何会有COOKIE这种机制算法
首先一种场景, 在一个网站上面, 我发起一次请求,那服务器怎么知道我是谁?是谁发起的此次请求呢, HTTP协议是无状态的协议, 浏览器的每一次请求,服务器都当作一次新请求, 可是在实际应用中咱们须要知道这个请求来自于谁,须要查找哪些信息返回给访问者,浏览器
这个时候就引入了COOKIE机制, COOKIE机制是什么呢? 其实就是服务器给客户端返回数据的时候,中间加了一个标识, 而后客户端再次请求数据的时候,数据中带上这个标识, 那么服务器接收到请求消息时就知道这个请求来自于谁了(至关于服务器接收到请求时,若是没有带识别码,生成一个识别码给客户端, 若是有识别码,就把这个识别码须要的对应内容返回给客户端)
安全
cookie保存在客户端,比较不安全;session保存在服务器端,比较安全。服务器
cookie目的能够跟踪会话,也能够保存用户喜爱或者保存用户名密码,session用来跟踪会话。cookie
建议用户名,密码保存在session,其它信息可保存在cookie。session
先来了解一下各自的工做机制网站
1. cookie的工做机制
一、服务器向客户端响应请求的时候,会在响应头中设置set-cookie的值,其值的格式一般是name = value的格式spa
二、浏览器将 cookie 保存下来对象
三、每次请求浏览器都会自动将 cookie 发向服务器内存
四、cookie最初是在客户端用于存储会话信息的。

2. session的工做机制?
一、当客户端第一次请求session对象时,服务器会建立一个session,并经过特殊算法算出一个session的ID,用来标识该session对象,而后将这个session序列放置到set-cookie中发送给浏览器
二、浏览器下次发请求的时候,这个sessionID会被放置在请求头中,和cookie一块儿发送回来
三、服务器再经过内存中保存的sessionID跟cookie中保存的sessionID进行比较,并根据ID在内存中找到以前建立的session对象,提供给请求使用,也就是服务器会经过session保存一个状态记录,浏览器会经过cookie保存状态记录,服务器经过二者的对比实现跟踪状态,这样的作,也极大的避免了cookie被篡改而带来的安全性问题
四、因为cookie能够被人为的禁止,必须有其余机制以便在cookie被禁止时仍然可以把session id传递回服务器。常常被使用的一种技术叫作URL重写,就是把session id直接附加在URL路径的后面,附加方式也有两种,一种是做为URL路径的附加信息,另外一种是做为查询字符串附加在URL后面

总之,cookie、session都会保存在浏览器,都会向服务器请求,只是实现的工做机制不一样,使用的场景不一样。