HTTP协议方法以及报头分析

Sams -《 HTTP Developers Handbook


HTTP协议内容:HTTP URL、HTTP请求、HTTP响应和HTTP消息。

HTTP超文本传输协议,是应用层协议。HTTP是一个基于请求/响应模式的、无状态的协议。

浏览器与服务器通信过程:客户发起连接;客户发送请求;服务器响应请求;服务器关闭连接。

HTTP1.1版是一个持续连接,支持流水线请求

HTTP URL格式—>http://host[“:”port][abs_path]

   其中host为Internet主机名或IP地址;abs_path是URI(Uniform Resource Identifier,统一资源标识符),当它为请求时默认由浏览器给出为”/”形式给出。

提示:URI(包括URL和URN,通用资源名)是个符号结构,指定构成web资源的字符串的各个不同部分。URL为特殊的URI,它包括了查找某个资源足够的信息。

HTTP请求组成:请求行,消息报头,请求正文组成,其中消息报头和请求正文都是可选的。

   请求行格式:MethodRequest—URI HTTP—Version CRLF    //注意CRLF表示回车换行

   例如:GET  /form.html HTTP/1.1(CRLF)   或者:HEAD/index.html  HTTP/1.1

HTTP请求的方法(HTTP中方法区分大小写,HTML文档中方法名不区分大小写)

方法

作用

GET

请求获取由Request—URI所标识的资源

POST

在Request—URI所标识的资源后附加新德资源

HEAD

请求获取由Request—URI所标识的资源的响应消息报头

PUT

请求服务器存储一个资源,并用Request—URI作为其标识

DELETE

请求服务器删除由Request—URI所标识的资源I

TRACE

请求服务器回送收到的请求信息,主要用于测试或诊断

CONNECT

保留将来使用

OPTIONS

请求查询服务器的性能,或查询与资源相关的选项和需求

     当我们在浏览器的地址栏中直接输入网址访问时,浏览器就采用GET方法向服务器获取资源。

      POST方法用于向目的服务器发出请求,请求服务器接受附在请求后边的数据,表单提交时用得较多。在消息报头后的两个回车换行后为提交的数据。

      HTTP响应,在服务器接收和解释后会返回一个HTTP响应消息。它由状态行,消息报头,响应正文组成。其中消息报头和消息正文都是可选的。

     状态行格式:HTTP—Version  Status—Code  Reason—Phrase  CRLF // 状态代码和状态描述

      例如:HTTP/1.1  200  ok CRLF   //CRLF指回车换行

      响应正文指服务器返回的资源的内容。在响应消息报头和响应正文间有一个空行。状态代码的第一个数字定义了响应的类别

1XX

指定信息——标识请求已接收,继续处理

2XX

成功——表示请求已经被成功接收、理解、接受

3XX

重定向——要完成请求必须进行更进一步的操作

4XX

客户端错误——请求有语法错误或请求无法实现

5XX

服务器端错误——服务器未能实现合法的请求

常见状态代码与状态描述

状态代码

状态描述

说明

200

Ok

客户端请求成功

400

Bad Request

由于客户端请求有语法错误,不能被服务器所理解

401

Unauthorized

请求未经授权,这个状态代码必须和WWW—Authenticate报头域一起使用

403

Forbidden

服务器收到请求,但是拒绝服务,并常在响应正文中给出拒绝原因

404

Not  Found

请求的资源不存在,例如输入了错误的URL

500

Internal  Server  Error

服务器发生不可预期的错误,导致无法完成客户端的请求

503

Service  Unavailable

服务器当前不能够处理客户端的请求,一段时间后可能恢复

       HTTP消息报头包括请求报头、响应报头、普通报头和实体报头。

        每个报头域组成:名字+”:”+空格+值组成,消息报头域的名字与大小写无关的。

        普通报头中,有少数报头域应用于所有的请求和响应消息,但并不用于传输的实体,这些报头域只用于传输的消息。

       常用请求报头域

报头名

作用

Accept

指定客户端接受哪些类型的信息,例如:Accept:image/gif

Accept—Charset

指定客户端接受的字符集,例如:Accept—Charset:gb2312

Accept—Encoding

指定客户端可接受的内容编码,例如:Accept—Encoding:gzip

Accept—Language

指定客户端可接受的一种自然语言,例如:Accept—Language:zh—cn

Authorization

用于证明客户端有权查看某个资源

Host

指定被请求资源的Internet主机和端口号,它是必须得报头域,例如:Host:www.baidu.com

User—Agent

允许客户端将它的操作系统、浏览器和其它属性告诉服务器。它不是必须的。

       常用响应报头:允许服务器传递不能放在状态行中附加响应信息,以及服务器信息和对Request—URI所标识的资源进行下一步访问的信息

报头名

作用

Location

用于重定向接受者到一个新德位置。如当域名更换时。

Server

包含服务器用来处理请求的软件信息。与User—Agent相对应。例如:Server:Apache—Coyote/1.1

WWW—Authenticate

必须被包含在401(未授权的)响应消息中,与Authorization请求报头域是相关的。当客户端收到401响应时,如果要求服务器对其进行验证,客户端就发送一个包含了Authorization报头域的请求,

例如:WWW—Authorization:Basic realm=”Basic  Auth  Test!”

     常用普通报头:

报头名

说明

Cache—Control

指定缓存指令,分为请求或响应时的缓存指令,缓存指令是单向的,C

例如JSP代码:response.setHeader(“Cache—Control”,”no—cache”);

Date

消息产生的日期和时间,客户端只有在发送消息中包含了消息正文的时候,才发送Date报头域,服务器端响应总是包含Date报头域。

Connection

允许发送者指定连接的选项,服务器响应后的状态

Pragmatic

用于包含特定实现(implementation—specific)的指令,Pragma:no—cache与HTTP1.1版的Cache—Control:no—cache作用相同

      常用实体报头:请求和响应消息都可以传送一个实体,实体由实体报头域和实体正文组成,实体正文常务请求消息的请求正文或响应消息的响应正文。实体报头域和实体正文并不一定在一起发送。

实体报头定义了实体正文和请求所标识的资源的元信息(元信息指描述其他信息的信息)

实体报头名

作用

Content—Encoding

媒体类型的修饰符,常用于文档压缩方法,例如:Content—Encoding:gzip

Content—Language

实体报头域描述了资源所用的自然语言,

Content—Length

指明实体正文的长度,没有包括实体报头的长度

Content—Type

指明发送给接收者的实体正文的媒体类型

例如:Content—Type:text/html:charset=GB2312

Last—Modified

指示资源最后的修改日期和时间

Expires

给出响应过期的日期和时间,非法的日期时间格式(包括零)当做已经过期。

例如:Expires:Thu.15 Sep 2005 16:00:00  GMT

猜你喜欢

转载自blog.csdn.net/weixin_39214481/article/details/81009036