http报文结构
http请求报文由三部分组成:请求行、请求头、请求正文,请求头与请求正文由CRLF(回车换行)分割开来,请求正文有可能为空或包含CRLF,因此不能通过一个CRLF与请求头区分开来,故用两个来分隔请求头和请求正文。
- 请求行
格式为:Method Request-URI HTTP-version CRLF
请求方式:GET、POST、HEAD、OPTIONS、PUT、DELETE、TRACE、CONNECT;
- 请求头
请求头一般为键值对:
User-Agent:PostmanRuntime/7.26.8 表示产生请求的客户端程序
Accept:/ 表示可接受的响应的类型为全部类型
Accept-Language:zh 表示可接受的响应的语言为中文
Accept-Encoding:gzip 表示客户端请求的压缩方式
Cookie:value 值由登陆之后服务端下发
token:value 值由登陆之后服务端下发
- 请求正文
http响应报文同样是三部分组成:响应行、响应头、响应正文。
- 响应行(状态行)
格式为:HTTP-version Status-code Reason-phrase CRLF
Status-code 响应状态码 Reason-phrase 状态码文本描述
状态码由三位数字组成,第一个数字表示响应类别
1xx:指示消息——请求已被接收,继续处理;
2xx:成功——请求成功接收;
3xx:重定向——要完成请求必须进行进一步操作;
4xx:客户端错误——请求语法有错误或请求无法实现;
5xx:服务器错误——服务器未能实现合法的请求;
常见错误码:
200 ok 成功;
301 moved permanently 请求永久重定向
302 moved temporarily 请求临时重定向
304 not modified 文件未修改,可以直接使用缓存文件
400 bad request 客户端语法错误,服务器不理解
401 unauthorized 请求未经授权,状态码要和报头域WWW-Authenticate一起使用
403 forbidden 服务器收到请求,但是拒绝提供服务
404 not found 请求资源不存在
500 internal server error 服务器发生不可预期的错误
503 server unavailable 服务器当前不能处理客户端请求,一段时间后可能恢复正常
http头部关于缓存的字段
Expries:响应头,代表资源的过期时间
Cache-Control:请求/响应头。控制缓存字段,精确控制缓存策略;
If-Modified-Since:请求头,资源最近修改时间,由浏览器告诉服务器;
Last-Modified:响应头,资源最近修改时间,由服务器告诉浏览器;
Etag:响应头,资源标识,由服务器告诉浏览器;
If-None-Match:请求头,缓存资源标识,由浏览器告诉服务器;
强缓存:Expires(HTTP/1.0)、Cache-Control(HTTP/1.1)
协商缓存:Last-Modified和If-Modified-Since(HTTP/1.0);ETag和If-None-Match(HTTP/1.1)