网络基本功(二十二):细说HTTP(下)

网络基本功(二十二):细说HTTP(下)浏览器

 

转载请在文首保留原文出处:EMC中文支持论坛https://community.emc.com/go/chinese p_w_picpath001.gif缓存

 

介绍

 

本文承接上文。服务器


更多信息

 

HTTP回复信息:微信

 

每个HTTP客户端发送给服务器请求都会要求服务器发回响应信息。在特定状况下,服务器会发回两条响应,一条初步响应和一条实际上的响应。通常,一个请求产生一个响应,代表服务器对于该请求的处理结果,而且响应每每消息主体还携带一个实体(文件或资源)。(微信号:EMC_Support)网络

响应消息格式以下:并发

<状态行>app

<响应首部>ide

<响应实体>网站

以下图所示。编码

p_w_picpath002.jpg

状态行


状态行是响应信息的起始行,做用有两个:告知客户端服务器使用的协议版本以及沟通客户端请求的处理结果。状态行语法格式以下:

<HTTP-VERSION><status-code><reason-phrase>

 

HTTP版本

状态行中的HTTP-VERSION标签与请求信息中的目的同样。服务器要求返回的版本号不得高于客户端发送的版本号。

 

响应码和文本描述

状态码和文本描述提供客户端请求处理结果的信息。服务器经过3位数字状态码告知客户端处理结果。目的是为了方便客户端HTTP软件采起合适的行动。文本描述将服务器响应显示给客户端用户。

状态代码由 3 位数字组成, 表示请求是否被理解或被知足,状态描述给出了关于状态码的简短的文字描述。状态码的第一个数字定义了响应类别,后面两位数字没有具体分类。第一个数字有5 种取值,以下所示。

  • 1xx:指示信息——表示请求已经接受,继续处理

  • 2xx:成功——表示请求已经被成功接收、理解、接受。

  • 3xx:重定向——要完成请求必须进行更进一步的操做

  • 4xx:客户端错误——请求有语法错误或请求没法实现

  • 5xx:服务器端错误——服务器未能实现合法的请求。


常见状态代码、状态描述、说明:
200 OK      //客户端请求成功
400 Bad Request  //客户端请求有语法错误,不能被服务器所理解
401 Unauthorized //请求未经受权,这个状态代码必须和WWW-Authenticate报头域一块儿使用 
403 Forbidden  //服务器收到请求,可是拒绝提供服务
404 Not Found  //请求资源不存在,eg:输入了错误的URL
500 Internal Server Error //服务器发生不可预期的错误
503 Server Unavailable  //服务器当前不能处理客户端的请求,一段时间后可能恢复正常

 

响应首部


响应首部可能包括:

Location(重定向)

Location响应报头域用于重定向接受者到一个新的位置。例如:客户端所请求的页面已不存在原先的位置,为了让客户端重定向到这个页面新的位置,服务器端能够发回Location响应报头后使用重定向语句,让客户端去访问新的域名所对应的服务器上的资源。当咱们在JSP中使用重定向语句的时候,服务器端向客户端发回的响应报头中,就会有Location响应报头域。  

 

Server响应头 
  Server响应头包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识通常按照重要性排序。它和User-Agent请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户端软件(浏览器)和操做系统的信息。下面是Server响应报头域的一个例子:Server: Apache-Coyote/1.1

 

实体头
  请求消息和响应消息均可以包含实体信息,实体信息通常由实体头域和实体组成。实体头域包含关于实体的原信息,实体头包括Allow、Content- Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD五、Content-Range、Content-Type、 Etag、Expires、Last-Modified、extension-header。extension-header容许客户端定义新的实体头,可是这些域可能没法未接受方识别。实体能够是一个通过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的长度由Content-Length或Content-Range定义。

 

Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的请求介质类型,如:"application/octet-stream"。

 

Last-modified:实体头指定服务器上保存内容的最后修订时间。

 

Accept-Ranges:这个字段说明Web服务器是否支持Range(是否支持断点续传功能),若是支持,则返回Accept-Ranges: bytes,若是不支持,则返回Accept-Ranges: none。

 

Content-Encoding:文档的编码(Encode)方法。它的值指示了已经被应用到实体正文的附加内容编码,于是要得到Content- Type报头域中所引用的媒体类型,必须采用相应的解码机制。Content-Encoding主要用语记录文档的压缩方法,下面是它的一个例子: Content-Encoding: gzip。若是一个实体正文采用了编码方式存储,在使用以前就必须进行解码。

 

Expires: 给出响应过时的日期和时间。一般,代理服务器或浏览器会缓存一些页面。当用户再次访问这些页面时,直接从缓存中加载并显示给用户,这样缩短了响应的时间,减小服务器的负载。为了让代理服务器或浏览器在一段时间后更新页面,咱们可使用Expires实体报头域指定页面过时的时间。当用户又一次访问页面时,若是Expires报头域给出的日期和时间比Date普通报头域给出的日期和时间要早(或相同),那么代理服务器或浏览器就不会再使用缓存的页面而是从服务器上请求更新的页面。不过要注意,即便页面过时了,也并不意味着服务器上的原始资源在此时间以前或以后发生了改变。

 

Refresh:表示浏览器应该在多少时间以后刷新文档,以秒计。除了刷新当前文档以外,你还能够经过setHeader("Refresh", "5; URL=http://host/path")让浏览器读取指定的页面。 注意这种功能一般是经过设置HTML页面HEAD区的<META HTTP-EQUIV="Refresh" CONTENT="5;URL=http://host/path">实现。

 

Allow:服务器支持哪些请求方法(如GET、POST等)。

 

Content-Disposition:打开一个网页时,浏览器会首先看是否有Content-Disposition: p_w_upload这一项,当是“Content-Disposition: p_w_upload”时是下载,“Content-Disposition:inline”是在线打开文件

 

下面是一个响应消息

 

HTTP/1.1 200 OK

Date: Mon, 27 Jul 2009 12:28:53 GMT

Server: Apache

Last-Modified: Wed, 22 Jul 2009 19:15:56 GMT

ETag: "34aa387-d-1568eb00"

Accept-Ranges: bytes

Content-Length: 51

Vary: Accept-Encoding

Content-Type: text/plain

 

 

HTTP方法:

 

GET

GET方法请求服务器检索由该HTTP请求中的URL指定的资源并在回复中发给客户端。这是最基本的请求类型,也是占大多数的HTTP数据流。当你输入一个常规URL或点击一个文档中的连接,一般就是提示Web浏览器发送GET请求。

对于GET的处理取决于若干因素。若是URL正确而且服务器可以找到资源,会发送合适的响应给客户端。返回资源需取决于请求对象的特性。若是没法稳当处理请求,则会产生一个错误信息。在使用缓存的状况下,代理服务器甚至客户端本身就能够知足请求。对于某种特定报头如 If-Modified-Since 或 If-Match, GET请求的含义可能随之而改变,要求服务器仅在知足特定条件时发送资源。这类请求称为条件GET。相似的,客户端可使用Range头来要求服务器仅发送部分资源。这类请求称为部分GET。

 

HEAD

HEAD方法同GET,但告知服务器不要发送消息实体。客户端一般使用这种方法来检查资源是否存在,状态,或文件大小,再决定是否须要服务器发送整个文件。HEAD请求的处理与GET相同,除了只返回头部而不返回实际的资源以外。

 

POST

POST方法容许客户端发送任意数据的实体到服务器以进行处理。它一般同于客户端提交例如交互式HTML信息给服务器程序,以后服务器做出行动并发回响应。这种方法用于各类在线进程。请求中的URL指定服务器上接受数据的程序名。

 

PUT

这种方法请求服务器将请求中的实体保存在请求中的URL里。PUT中,URI指明请求中的实体,于是PUT可以让文件复制到服务器,在GET请求中文件可以被复制到客户端。与之相反,POST中URI标识的程序处理请求中的实体,所以一般应用于交互式程序。PUT用法不少,如上传内容到网站,这种状况下必须加以认证。可是,在站点上存储文件一般使用其余方式,如FTP。

 

TRACE

客户端经过这种方法接收发至服务器的请求,用于诊断目的。

相关文章
相关标签/搜索