简介
用于HTTP协议交互的信息被称为HTTP报文。请求端(客户端)的HTTP报文叫做请求报文,相应端(服务器端)的叫做响应报文。HTTP报文本身是由多行(用CR+LF作换行符)数据构成的字符串文本。
HTTP报文大致可分为报文首部和报文主体两块。两者由最初出现的空行(CR+LF)来划分。通常,并不一定要有报文主体。
报文结构:
请求与响应
请求报文的结构:
响应报文的结构:
- 请求行:包含用于请求的方法,请求URI和HTTP版本
- 状态行:包含表明响应结果的状态码,原因短语和HTTP版本
- 首部字段:包括表示请求和响应的各种条件和属性的各类首部。
- 其他:可能包含HTTP的RFC里未定义的首部(Cookie等)
HTTP方法
方法名区分大小写,应使用大写字母。
- GET :获取资源
GET方法用来请求访问已被URI识别的资源。指定的资源服务器端解析后返回响应内容。也就是说,如果请求的资源是文本,那就保持原样返回;如果是像CGI(Common Gateway interface,通用网关接口)那样的程序,则返回经过执行后的输出接口。
-
POST:传输实体主体
虽然用GET方法也可以传输实体的主体,但一般不用GET方法进行传输,而是用POST方法。虽说POST的功能与GET很相似,但POST的主要目的并不是获取响应的主题内容。
-
PUT:传输文件
PUT方法用来传输文件。就像FTP协议的文件上传一样,要求在请求报文的主体中包含文件内容,然后保存到请求URI指定的位置。但是,鉴于HTTP/1.1的PUT方法自身不带验证机制,任何人都可以上传文件,存在安全性问题,因此一般的Web网站不使用该方法。若配合Web应用程序的验证机制,或架构设计采用REST(REpresentational State Transfer,表征状态转移)标准的同类Web网站,就可能会开发使用PUT方法。
-
HEAD:获得报文首部
HEAD方法和GET方法一样,只是不返回报文主体部分。用于确认URI的有效性及资源更新的日期时间等。
-
DELETE:删除文件
DELETE方法用来删除文件,是与PUT相反的方法。DELETE方法按请求URI删除指定的资源。
但是,HTTP/1.1的DELETE方法本身和PUT方法一样不带验证机制,所以一般的Web网站也不使用DELETE方法。当配合Web应用程序的验证机制,或遵守REST标准时还是有可能会开放使用的。
-
OPTIONS:询问支持的方法
OPTIONS方法用来查询针对请求URI指定的资源支持的方法。
-
TRACE:追踪路径
TRACE方法是让Web服务器将之前的请求通信环回给客户端的方法。
发送请求时,在Max-Forwards首部字段中填入数值,每经过一个服务器端就将该数字减1,当数值刚好减到0时,就停止继续传输,最后接受到请求的服务器端则返回状态码200 OK 的响应。
CONNECT:要求用隧道协议连接代理
CONNECT方法要求在与代理服务器通信时建立隧道
,实现用隧道协 议进行 TCP 通信。主要使用SSL(Secure Sockets Layer,安全套接 层)和TLS(Transport Layer Security,传输层安全)协协把通信内容 加 密后经网络隧道传输。
CONNECT 方法的格式:
CONNECT 代理服务器名:端口号 HTTP版本
首部字段
首部一般有4种,分别是:通用首部、请求首部、响应首部和实体首部。
- 通用首部字段
- 请求首部字段
- 响应首部字段
- 实体首部字段