HTTP报文

HTTP报文就是一些简单的格式化数据块,每个报文包含来自客户端的请求,或者是服务器端的响应,报文可以通过起始行,头部和主体来描述

GET /lihui/lihui.txt HTTP/1.0
Accept: text/*
Host: www.lihuia.com


HTTP/1.0 200 OK
Content-type: text/plain
Content-length: 12

Hello World!

起始行和头部是由\r\n(ASCII为13和10)组成的终止符作为结束,可以写成CRLF;Content-type说明了主体是什么,Content-Length说明了主体有多大

主体部分是可选的,也就是主体部分既可以包含文本或者其它二进制数据,也可以为空

 

HTTP报文包括请求和响应,客户端发送请求报文,服务器收到请求之后发送响应报文给客户端

method

客户端请求服务器对资源的操作步骤,比如GET,POST等,通常有

GET     不包含主体              从服务器获取亿份文档
HEAD    不包含主体              只从服务器获取文档的首部
POST    包含主体                向服务器发送需要处理的数据
PUT     包含主体                将请求的主体部分存储在服务器上
TRACE   不包含主体              对可能经过代理服务器传送到服务器上去的报文进行跟踪
OPTIONS 不包含主体              决定可以在服务器上执行哪些方法
DELETE  不包含主体              从服务器上删除一份文档
CONNECT 不包含主体              让服务器代替用户去访问其它网页,返回数据

 

request-URL

所请求的资源,或者包含有路径的完整URL,绝对和相对都是可以的

version

报文锁使用的HTTP版本,一般来说格式是这样的

HTTP/<major>.<minor>

major是主要版本号,minor是次要版本号,都是正数

status-code

是一个三位数,描述请求的返回状态码

100 ~ 101       信息提示
200 ~ 206       成功
300 ~ 305       重定向
400 ~ 415       客户端错误
500 ~ 505       服务器错误

200             OK                              成功,请求的所有数据都在响应主体中
401             Unauthorized(未授权)     需要输入用户名和密码
404             Not Found                       服务器无法找到所请求URL对应的资源

reason-phrase

数字状态码,原因短语是响应起始行中最后一个组件,为状态码(比如200)提供了文本形式的解释(比如OK);原因短语和状态码是成对出现的

header

可以有0或者多个头部,每个头部都包含一个key,后面跟着冒号,接着空格可选,接着就是value,最后就是CRLF;而头部都是以单独CRLF结束,表示头部的结束和主体的开始

body

主体部分包含了一个由任意数据组成的数据块,而主体是可选的

发表回复