应用层之http、https、cookie和session

1.http协议

1.1 http封装后数据报的格式

在这里插入图片描述

1.2 http常用的方法

http中最常用的就是get和post方法,除此之外还有一些其他的方法,get一般用于获取/查询资源信息,而post一般用于更新资源信息。

在这里插入图片描述

1.3 get和post方法的区别

  1. 使用get方法可以被收藏为书签,可以被缓存,参数保留在历史记录中;而post方法这些都不行
  2. get方式提交数据的大小(一般来说1024字节),http协议并没有硬性限制,而是与浏览器、服务器、操作系统有关。post理论上来说没有大小限制,http协议规范也没有进行大小限制,但实际上post所能传递的数据量根据取决于服务器的设置和内存大小。
  3. 对数据类型的限制:get方法只允许ASCII字符;post无限制,也允许二进制数据
  4. 安全性:get方法的安全性较差,因为发送的数据时URL的一部分,而post方法传输数据的时候。请求数据可以放在请求正文里面
  5. 可见性:get方法数据在URL中,对所有人是可见的,而post方法数据不会显示在URL中
    在这里插入图片描述

1.4 http状态码

在这里插入图片描述
在这里插入图片描述

1.5 http常见header

  • Content-Type:数据类型(text/html等)
  • Content-Length:Body的长度(消息体的长度)
  • Host:客户端告诉服务器,所请求的资源是在哪个主机的哪个端口上
  • User-Agent:声明用户的浏览器版本信息
  • referer:当前页面是从哪个页面上跳转过来的
  • location:搭配3xx状态码使用,告诉客户端接下来要去哪里访问
  • Cookie:用于客户端存储少量信息,通常用于实现会话(session)功能

2.session和cookie

2.1 cookie

http是一个无状态协议,但是访问有些资源时往往要经过认证才能访问,而且要一直保持在线状态,所以,cookie十一中在浏览器端解决的方案,将登录认证之后的用户信息保存在本地浏览器中,后面发起http请求,都会自动携带上该信息,就能达到认证用户,保持用户在线的作用

  • 使用场景:免登陆
  • 实现:将用户的信息保存在客户端本地(和浏览器相关的本地路径下,保存用户信息到本地文件)域名绑定用户信息的cookie,之后访问某个域名时,自动从本地抓取该域名的cookie信息
  • 用户登录,校验通过时,响应头携带set-cookie,告诉客户端,让浏览器自动设置cookie到本地之后每次请求,浏览器自动携带cookie头。
  • cookie是保存在客户端本地文件,使用场景:多少天免登录

2.2 session

将用户敏感信息放到本地浏览器中,能解决一定得问题,但是又引入了新的安全问题,一旦cookie丢失,用户信息泄露,也很容易造成跨站共计,所以有了另一种解决方法,将用户敏感系信息保存至服务器,而服务器本森采用md5算法或相关算法生成唯一值(session id),将该值保存至客户端浏览器中,随后,客户端后序2请求,浏览器会自动携带该id,进而再在服务器端认证,达到状态保持的效果

登录操作:

  1. 生成随机的字符串session id,保存在Tomcat的用户信息数据结构中,session id绑定一个用户,一个用户保存多个信息
  2. 把session id 放在响应头,头信息的键值对,键是对方约定好的,值就是session id 的值
  3. 客户端之后的请求,都携带session id
  4. 服务端接收请求,都验证session id (在map中根据通行证号、查询用户,来判断是否登录)

面试:

  1. session 是用来干嘛的?会话,用来保持用户身份,主要解决需要登录的敏感资源访问的问题
  2. 如何实现?通过服务器保存session的信息
  3. 流程
  4. session 在会话结束(超时或注销),服务器重启消失

2.3 cookie和session的区别

  1. cookie以文本格式存储在浏览器中,而session存储在服务端
  2. 因为每次发起http请求,都要携带有效的cookie信息,所以cookie一般有大小限制,以防止增加网络压力,一般不超过4k
  3. 可以轻松访问cookie值但我们无法轻松访问会话值,因此session方案更安全
  • 数据存放位置不同:cookie数据存放在客户的浏览器上,session数据放在服务器上。
  • 安全程度不同:cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session。
  • 性能使用程度不同:session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用cookie。
  • 数据存储大小不同:单个cookie保存的数据不能超过4K,很多浏览器都限制一个站点最多保存20个cookie,而session则存储与服务端,浏览器对其没有限制。
  • 会话机制不同:session会话机制:session会话机制是一种服务器端机制,它使用类似于哈希表(可能还有哈希表)的结构来保存信息。cookies会话机制:cookie是服务器存储在本地计算机上的小块文本,并随每个请求发送到同一服务器。 Web服务器使用HTTP标头将cookie发送到客户端。在客户端终端,浏览器解析cookie并将其保存为本地文件,该文件自动将来自同一服务器的任何请求绑定到这些cookie。

3. http和https的区别

  • HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协议。
  • HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息。)

3.1 https的优点

  • 使用 HTTPS 协议可认证用户和服务器,确保数据发送到正确的客户机和服务器。
  • HTTPS 协议是由SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,要比 HTTP 协议安全,可防止数据在传输过程中不被窃取、修改,确保数据的完整性。
  • HTTPS 是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。

3.2 https的缺点

  • HTTPS 协议握手阶段比较费时,会使页面的加载时间延长近。
  • HTTPS 连接缓存不如 HTTP 高效,会增加数据开销,甚至已有的安全措施也会因此而受到影响。
  • HTTPS 协议的安全是有范围的,在黑客攻击、拒绝服务攻击和服务器劫持等方面几乎起不到什么作用。
  • SSL 证书通常需要绑定 IP,不能在同一 IP 上绑定多个域名,IPv4 资源不可能支撑这个消耗。
  • 成本增加。部署 HTTPS 后,因为 HTTPS 协议的工作要增加额外的计算资源消耗,例如 SSL 协议加密算法和 SSL 交互次数将占用一定的计算资源和服务器成本。
  • HTTPS 协议的加密范围也比较有限。最关键的,SSL 证书的信用链体系并不安全,特别是在某些国家可以控制 CA 根证书的情况下,中间人攻击一样可行。

关于http和https,下面这篇文章总结的非常好,我们可以参考:http和https面试常考问题

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值