参考:segmentfault.com/a/119000000…html
HTTP报文是包裹在TCP报文中发送的,服务器端收到TCP报文时会解包提取出HTTP报文。可是HTTP报文是明文,若是中间被截取的话会存在一些信息泄露的风险。web
HTTPS协议的本质就是HTTP + SSL(or TLS)。在HTTP报文进入TCP报文以前,先使用SSL对HTTP报文进行加密。算法
HTTPS在传输数据以前须要客户端与服务器进行一个握手(TLS/SSL握手),在握手过程当中将确立双方加密传输数据的密码信息(第二次握手服务器会发送一个SSL证书,客户端对其验证)。segmentfault
TLS/SSL使用了非对称加密、对称加密以及hash等。具体过程请参考经典的阮一峰先生的博客TLS/SSL握手过程。浏览器
SSL加密过程: 须要注意的是非对称加解密算法的效率要比对称加解密要低的多。 因此SSL在握手过程当中使用非对称密码算法来协商密钥,实际使用对称加解密的方法对http内容加密传输。缓存
Https的好处安全
缺点服务器
200 ok 服务器已成功处理了请求并提供了请求的网页cookie
202 Accepted 已经接受请求,但处理还没有完成session
204 No Content 没有新文档,浏览器应该继续显示原来的文档
206 Partial Content 客户端进行了范围请求(实现断点续传)
301 Moved Permanently 永久性重定向
302(或307) 临时性重定向
304 Not Modified 未修改,自从上次请求后,请求的内容未修改过
401 未经受权
403 Forbidden 服务器拒绝请求
404 Not Found 服务器不存在客户端所请求的资源
500 服务器遇到一个错误,使其没法请求提供服务
Sesssion在服务端生成,存在客户端。客户端访问某个地址时,服务器会根据页面的头部信息生成coolkie(字符串),而后cookie会加在http响应头中,发往客户端并保存在浏览器。在下次客户端请求时,请求中会附带存储的Cookie。
Session 是在服务器端生成的,存储在服务器端,即存在内存中。能够对生成的 Session 设置过时时间,若是不设置过时时间,默认的 Session 过时时间是30 分钟。可是,Sesssion 的生成的同时,会生成一个与之相关联的的 SessionID ,此SessionID的存储是须要 Cookie来完成的。SessionID 是以名称为 JSESSIONID,其值应该是一个既不会重复,又不容易被找到规律以仿造的字符串。SessionID会随着这次Http响应,一并返回到客户端,并保存在客户端中(Cookie)。到当前请求再次发出后,该 SessionID会随着 Http 头部,传到服务器中,服务器依据当前 SessionID 获得与之对应的 Session.
注意:一个域,在客户端创建的全部的Cookie都是能够共享的,只要 Cookie 没有过时。
在网站中,http请求是无状态的。也就是说即便第一次和服务器链接后而且登陆成功后,第二次请求服务器依然不能知道当前请求是哪一个用户。Cookie和Session的出现就是为了解决这个问题。
参见:www.cnblogs.com/xiaoshitout…
web开发发展至今,cookie和session的使用已经出现了一些很是成熟的方案。在现在的市场或者企业里,通常有两种存储方式:
参见博客:www.cnblogs.com/xxtalhr/p/9…
若是客户端禁用了 Cookie 的话,不少网站任然能够存储用户的信息。一种处理的方式是URL 重写,将 SesseionID 直接附加在请求地址的后面。另外一种处理的方式是,使用隐藏自动的方式。就是服务器自动的在表单中,添加一个隐藏字段,以便在表单提交时,将 SesseionID 一块儿传到服务器,进行识别。