HTTP之状态码和首部

3.4状态码

HTTP状态码被分为5大类。

3.4.1 100——199信息状态码

1.客户端与100 Continue

如果客户端在向服务器发送一个实体,并且愿意在发送实体之前等待100Continue响应,那么客户端就要发送一个携带了值为100Continue的请求首部Expect。如果客户端没有发送实体,就不应该发送100 Continue Expect首部,因为这样会使服务器误以为客户端要发送实体。

2.服务器与100 Continue

如果服务器收到了一条带有值为100 Continue的Expect的首部请求,它会用100 Contiue响应或一条错误码来进行响应,服务器永远也不应该向没有发送100 Contiune期望的客户端发送100 Continue状态码。


3.4.2 200——299成功状态码


3.4.3 300——399重定向状态码

重定向状态码要么告知客户端使用替代位置来访问他们所感兴趣的资源,要么就提供一个替代的响应码而不是资源内容。如果资源已被移动,可发一个重定向的状态码和一个可选的Location首部来告知客户端资源已被移走,以及现在可以在哪里找到它。



可以通过某些重定向状态码对资源的应用程序本地副本与源端服务器上的资源进行验证。比如,HTTP应用程序可以查看其资源的本地副本扔然是最新的,或者再服务器上的资源是否被修改过。客户端发送了一个特殊的IF-Modified-Since首部,说明只读取1997年10月之后修改过的文档。这个日期之后,此文档并未修改过,因此,服务器回送了一个304状态码。而不是文档内容。




3.4.4 400——499客户端错误状态码

有时客户端会发送一些服务器无法处理的东西,比如格式错误的请求报文,最常见的是请求一个不存在的URL。




3.4.5 500——599服务器错误状态码

有时客户端发送了一条有效的请求,服务器自身却出错了。这可能是客户端碰上了服务器缺陷,又或者服务器上的子元素,比如某个网关资源,出了错。




3.5首部

首部和方法配合,共同决定了客户端和服务器能做什么事。

在请求和响应报文中都可以用首部来提供信息,有些首部是某种报文专用的,有些首部则更要普通一些。


3.5.1通用首部

这些首部提供了报文相关的最基本的信息,它们被称为通用首部。不论报文时什么类型,都为其提供一些有用的信息。


通用缓存首部

HTTP/1.0引入了第一个允许HTTP应用程序缓存对象本地副本的首部,这样就不需要总是从源端服务器获取了。


3.5.2请求首部

请求首部是只在请求报文中有意义的首部。副局为其可以根据请求首部给出的客户端端信息试着为客户端提供更好的响应。


1.Accept首部

Accept首部为客户端提东了一种将其喜好能力告知服务器的方式,包括他们想要什么,可以使用什么,以及最重要的,他们不想要什么。


2.条件请求首部

有时客户端希望为请求加上某些限制,比如客户端已经有了一份文档副本,就希望只在服务器上的文档与客户端拥有的副本有所区别时,才请求服务器传输文档。



3.安全请求首部

HTTP本身就是一种简单的机制可以对请求进行质询/响应认证。


4.代理请求首部



3.5.3响应首部

1.协商首部



2.安全响应首部



3.5.4实体首部

有很多首部用来描述HTTP报文的负荷。由于请求和响应报文中都可能包含实体部分,所以在这两种类型的报文中都可能出现这些首部。


1.内容首部

与实体内容有关的特定信息,说明了其类型、尺寸以及处理它所需要的其他有用信息。


2.实体缓存首部




猜你喜欢

转载自blog.csdn.net/duan15378766962/article/details/81044935