HTTP相关 (2)

如下是一个HTTP响应报文

image-20210327230733385

它有三个部分:响应行,首部行,实体体(entity body)

实体体部分是报文的主要部分,包含了所请求的对象本身.

响应行有3个字段:协议版本字段,状态码和相应状态信息.

在这个例子中,状态行指示服务器正在使用HTTP/1.1,并且一切正常

Date:服务器产生并发送该响应报文的日期和时间.(不是指对象创建或者最后修改的时间,而是服务器从它的文件系统中检索到该对象,将该对象插入响应报文,并发送该响应报文的时间)

Server:指示该报文是由一台Apache-Coyote/1.1服务器产生的

Content-Type:指示了实体体中的对象是json文本

一个HTTP响应报文的通用格式如下

image-20210327231724589

HTTP的请求方法

image-20210327232940936

常见的状态码

200 OK:请求成功,信息在返回的响应报文中

301 Moved Permanently:请求的对象已经被永久转移,新的URL定义在响应报文的Location:首部行中.客户软件将自动获取新的URL.

例如,当lldexample更名为example时,他们将URL从lldexample.com更改为example.com,每个lldexample.com页面都通过永久的301重定向重定向到相应的example.com页面。

302 Found:临时重定向,表示请求的资源已被分配了新的URI,希望用户(本次)能使用新的URI访问.

例如,可以在登陆用户访问用户中心的时候重定向到登录页面。接着,搜索引擎就会获取新内容,并保留旧的URL。由于服务器返回的是302代码,搜索引擎会认为新的网址只是暂时的。

400 Bad Request:表示请求报文中存在语法错误.当错误发生时,需修改请求的内容后再次发送请求.

403 Forbidden:表示对请求资源的访问被服务器拒绝了.

404 Not Found:表示服务器上无法找到请求的资源

什么情况下会出现404?

> 第一种: 用户输入的地址链接有误,导致IIS提示404 not found。 > 第二种: 服务器上本该有的页面已经被删除了,这种情况多发于BBS论坛,N年前的帖子如今被你通过搜索引擎搜索出来了,但实际上BBS论坛为了保障服务器的资源合理运用,都会将过期或非常久远的信息页面删除,导致404 not found。 > 第三种: DNS设置阻止,就中文环境而言,国外有一些被禁网站在中国浏览同样会出现404 not found的现象,这需要使用代理服务器才可以正常浏览。

500 Internal Server Error:表示服务器在执行请求时发生了错误,也可能是web应用存在bug或临时故障

503 Service Unavaliable:表示服务器暂时处于超负载或正在进行停机维护,现在无法处理请求

505 HTTP Version Not Supported:服务器不支持请求报文使用的HTTP协议版本

HTTP/1.0 HTTP/1.1 HTTP/2 HTTP/3 演变

HTTP/1.0:1996年5月,HTTP/1.0 版本发布,内容大大增加。

首先,任何格式的内容都可以发送。这使得互联网不仅可以传输文字,还能传输图像、视频、二进制文件(超文本)。这为互联网的大发展奠定了基础。

其次,除了GET命令,还引入了POST命令和HEAD命令,丰富了浏览器与服务器的互动手段。

再次,HTTP请求和回应的格式也变了。除了数据部分,每次通信都必须包括头信息(HTTP header),用来描述一些元数据。

其他的新增功能还包括状态码(status code)、多字符集支持、多部分发送(multi-part type)、权限(authorization)、缓存(cache)、内容编码(content encoding)等。

痛点:每个TCP连接只能发送一个请求,发送数据完毕,链接就关闭,如果还要请求其他资源,就必须再新建一个连接。

TCP连接的新建成本很高,因为需要客户端和服务器三次握手,并且开始时发送速率较慢(slow start)。所以,HTTP 1.0版本的性能比较差。随着网页加载的外部资源越来越多,这个问题就愈发突出了。

HTTP/1.1:1997年1月,HTTP/1.1 版本发布,只比 1.0 版本晚了半年。它进一步完善了 HTTP 协议,一直用到了20年后的今天,直到现在还是最流行的版本。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zyfjgg.html