HTTP响应报文详解
目录
响应标头是可以在HTTP响应中使用的HTTP标头,这听起来确实像是一句废话,不过确实事实就是这样解释的。并不是所有出现的在响应中的标头。还有一些特殊的我们上面说过,有通用标头和实体标头也会出现在响应标头中,比如Contenet-Length就是一个实体标头,但是,在这种标头,但是,在这种情况下,这些实体请求通常成为响应头,下面以一个例子我们来讨论下响应头。
响应报文的结构与请求报文的结构类似,下面我来画张图给大家演示下响应报文的具体结构。
首先我们呢来看响应行的结构
首先HTTP/1.1是HTTP协议的版本号
接下来200 OK是HTTP的状态码,代表着HTTP请求时的状态,这个我们在文章的后面会有一些状态码的例子,在此我们只需要知道HTTP的状态码是回应HTTP请求时的请求状态。
接下来的话就是响应头部的解析:
与请求头部相同,都是以KEY-value的形式存在的, 向web服务器传达一些我们想要传达的信息。
这里可以去看我的HTTP请求报文的解析。
接下来是一个空行。
用于分开响应行和响应正文正文。
响应正文也就是我们真正需要向服务器发送的数据包。
HTTP的优点和缺点
(1)HTTP的优点
简单灵活易扩展
HTTP最重要也是最突出的优点是,“简单、灵活、易于拓展”。
HTTP的协议比较简单,它的主要组成就是header + body ,头部信息也是简单的文本格式,所以我们根据HTTP的请求信息就能得到大概的信息。这些特点就突出了HTTP的简单的特点,即我们看到对应的响应消息,就可以分析出当前的请求或者相应消息的意思。
在简单的基础上,HTTP协议又多了灵活和易拓展的优点。
HTTP协议里的请求方法,URL,状态码,原因短语,头字段等每一个核心组成要素都没有被指定死,允许我们开发者任意的定制,这样我们在开发服务器的时候,浏览器和服务器就能得到最大程度的自由。
应用广泛,环境成熟
因为本身过于简单,普及,因此应用很广泛。因为HTTP协议本身不属于一种语言,它不限定某种编程语言或者操作系统。所以天然具有跨语言,跨平台的优越性。而且因为语言本身的简单特性很容实现,几乎全部的编程语言都有HTTP调用库和外围的开发测试工具。
无状态
无状态对于HTTP来说即使优点也是缺点,它的意思就是协议对于事物的处理没有记忆的能力,服务器不知道客户端是什么状态。因为服务器没有记忆能力,就不需要额外的资源来记录状态信息,这样实现起来会简单很多,而且还能减轻服务器的负担,能把更多的CPU和内存用来对外部进行服务。
(2)HTTP的缺点
无状态
既然服务器没有记忆能力,那么也就是说,我们每次进行一个步骤,如果需要用到上一个步骤的信息,就需要再次发送信息来使用,服务器没有存储信息的能力,这样很多的信息需要重复的发送,这样不仅麻烦,而且还增加了不必要的数据传输。
明文传输
HTTP协议里面还有一把双刃剑,就是明文传输。明文传输的意思就是协议里面的报文不使用二进制数据,而是采用简单的可阅读文本的形式。
对比TCP,UDP等二进制协议,它优点很简单,就是不需要借助任何工具,用浏览器或者tcpdump抓包后,直接用肉眼就很容易查看或者修改,为我们开发测试提供了很大的便利
缺点也是显而易见的,就是不安全,可以被监听和被窥探,一旦信息遭到拦截,用户的信息就很容易被截获利用,这也就导致了HTTP的安全性是不足的。
性能
HTTP的性能不算差,但不是完全适应当前的互联网,还有很大的提升空间。