HTTP请求报文格式与HTTP2.0

1.request请求报文格式:

  request的请求报文格式由3各部分组成:请求行、请求头、请求主体(当为post请求时)。

请求行:

  1.请求的类型,常见的是get,post。如果采用RESTful风格的话,get(查询资源)、post(增加资源)、put(更新资源)、delete(删除资源)。

  2.请求资源的URI,为相对地址。

  3.HTTP协议的版本号(下文会讲到具体的http的版本的协议)。

请求头:完整的GET请求如下图所示(可以用谷歌浏览器的调试功能的network可以看到对应的请求介绍。)

首先解释下GET请求的请求头各参数的意思:

  Host:主机名,把它和请求行的URI进行拼接的话,会得到请求资源的完整的路径。

  Accept:表示客户端可以接受数据的类型。

  Accept-Language:表示客户端可以接受语言的格式。

  Accept-Encoding:表示客户端接收的数据压缩格式。

  Cache-Control:可以设置浏览器端的是否缓存数据,或者设置缓存数据的过期时间。

注意:get请求是没有请求主体的,它的请求参数都是附在请求的url后面。

post请求的如下图:

在post请求中,是有请求主体的。以key-value形式发送给后台(在url后面是看不到的)。

2.response响应报文格式:

  response响应报文也是三部分组成:响应行、响应头、响应主体。

响应行:

  1.响应码。

  2.响应码的描述信息。

  3.http协议的版本。

下面介绍常见的响应码:(注意以下采用RESTful介绍)

  • 200:响应成功。比如请求类型为get,请求成功时(资源成功的查到),返回200。
  • 201:请求成功,而且有一个新的资源已经依据请求的需要而建立(相当于PostMapping增加成功的响应码)。
  • 204:服务器成功处理了请求,但没有返回任何内容(相当于PutMapping更新成功的响应码)。
  • 301:(永久移动)请求网址永久移动到新的位置。服务器返回此响应(对GET,HEAD请求)时,会自动将请求者定位到新位置。
  • 302:(临时移动)服务器目前从不同位置的网页响应请求,但请求者应继续使用原有的位置来进行以后的请求。、
  • 304:(未修改)自从上次请求后,请求的网页未修改过。服务器返回此响应码时,不会返回网页内容。(这种一般都是从缓存中拿的,如果缓存的内容与实际内容相同的话。)
  • 400:(错误请求)服务器不理解请求的语法。一般是请求参数的错误。两边参数写的不一样,导致服务端无法匹配。
  • 404:表示资源不存在或未找到。
  • 500:服务器内部错误。
  • 501:(尚未实施)服务器不具备完成请求的功能,例如:服务器无法识别请求方法时可能会返回此状态码。
  • 502:(错误网关)服务器作为网关代理,从上游服务器收到无效的响应。
  • 503:(服务器不可用)服务器目前无法使用(由于超载或者停机维护)。通常,这只是暂时状态。
  • 504:(网关超时)服务器作为网关或代理,但是没有从上游服务器收到请求。
  • 505:(HTTP的版本不受支持)服务器不支持请求中所用的HTTP协议的版本。

301与302响应码的区别:

  • 字面上理解,301是永久重定向,而302是临时重定向。
  • 详细来说,301和302状态码都表示重定向,就是说浏览器在拿到服务器返回的这个状态码后会自动跳转到一个新的URL地址,这个地址可以从响应的Location首部中获取(用户看到的效果就是他输入的地址A瞬间变成了另一个地址B)——这是它们的共同点。他们的不同在于。301表示旧地址A的资源已经被永久地移除了(这个资源不可访问了),搜索引擎在抓取新内容的同时也将旧的网址交换为重定向之后的网址;302表示旧地址A的资源还在(仍然可以访问),这个重定向只是临时地从旧地址A跳转到地址B,搜索引擎会抓取新的内容而保存旧的网址(这个在下面的理解部分也有说明)。
  •  注意: 301请求是可以缓存的, 即通过看status code,可以发现后面写着from cache。

         或者你把你的网页的名称从php修改为了html,这个过程中,也会发生永久重定向。

可是,为什么要进行重定向啊?什么时候需要重定向呢?

1)网站调整(如改变网页目录结构);
2)网页被移到一个新地址;
3)网页扩展名改变(如应用需要把.php改成.Html或.shtml)。
        这种情况下,如果不做重定向,则用户收藏夹或搜索引擎数据库中旧地址只能让访问客户得到一个404页面错误信息,访问流量白白丧失;再者某些注册了多个域名的网站,也需要通过重定向让访问这些域名的用户自动跳转到主站点等。

对301与302的理解:
    从网站A(网站比较烂)上做了一个302跳转到网站B(搜索排名很靠前),这时候有时搜索引擎会使用网站B的内容,但却收录了网站A的地址,这样在不知不觉间,网站B在为网站A作贡献,网站A的排名就靠前了
    301跳转 对查找引擎是一种对照驯良的跳转编制,也是查找引擎能够遭遇的跳转编制,它告诉查找引擎,这个地址弃用了,永远转向一个新地址,可以转移新域名的权重。而302重定向很容易被搜索引擎误认为是利用多个域名指向同一网站,那么你的网站就会被封掉,罪名是“利用重复的内容来干扰Google搜索结果的网站排名”。

响应头:如下图:

  

响应头部分参数解析:

  Content-Type:内容的类型。

  Content-Length:内容的长度。

       响应体 : 服务器发送给客户端的参数。

3.http1.x 和 http2.0的区别

首先介绍http1.0的弊端:

  http1.0每建立一次TCP连接,只能提供一次request请求和response请求,一次response请求结束后,自动断开TCP连接。之后如果想要再发送http请求,必须重新建立连接。

猜你喜欢

转载自blog.csdn.net/qq_36387730/article/details/79969943
今日推荐