Request
- 请求行 Request line
- 请求头 Header
- 空行
- 请求体
抓包的request结构:
GET /mix/76.html?name=kelvin&password=123456 HTTP/1.1
Host: www.fishbay.cn
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding: gzip, deflate, sdch
Accept-Language: zh-CN,zh;q=0.8,en;q=0.6
1. 请求行
GET
为请求类型,/mix/76.html?name=kelvin&password=123456
为要访问的资源,HTTP/1.1
是协议版本
2. 请求头部
从第二行起为请求头部,Host
指出请求的目的地(主机域名);User-Agent
是客户端的信息,它是检测浏览器类型的重要信息,由浏览器定义,并且在每个请求中自动发送。
3. 空行
请求头后面必须有一个空行
4. 请求体
请求的数据也叫请求体,可以添加任意的其它数据。这个例子的请求体为空。
Response
- 状态行 Request line
- 响应头 Header
- 空行
- 响应体
抓包的response结构:
HTTP/1.1 200 OK
Server: nginx
Date: Mon, 20 Feb 2017 09:13:59 GMT
Content-Type: text/plain;charset=UTF-8
Vary: Accept-Encoding
Cache-Control: no-store
Pragrma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache
Content-Encoding: gzip
Transfer-Encoding: chunked
Proxy-Connection: Keep-alive
{"code":200,"notice":0,"follow":0,"forward":0,"msg":0,"comment":0,"pushMsg":null,"friend":{"snsCount":0,"count":0,"celebrityCount":0},"lastPrivateMsg":null,"event":0,"newProgramCount":0,"createDJRadioCount":0,"newTheme":true}
1. 状态行
状态行由协议版本号、状态码、状态消息组成
2. 响应头
响应头是客户端可以使用的一些信息,如:Date
(生成响应的日期)、Content-Type
(MIME类型及编码格式)、Connection
(默认是长连接)等等
3. 空行
请求头后面必须有一个空行
4. 响应体
请求的数据也叫请求体,可以添加任意的其它数据。这个例子的请求体为空。
状态码
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 //服务器当前不能处理客户端的请求,一段时间后可能恢复正常