HTTP协议
请求响应式协议,一次请求和一次响应构成一次HTTP事务。
HTTP 协议是无状态的,任何两次请求都是没有依赖关系的。
协议分层-基于 IP 协议栈
HTTP 应用层
TCP 传输层 80 端口 保证传输数据有序可靠
IP 网络层 IP <- 域名服务器(DNS)<- 域名(www.XXX.com)
数据链路层和物理层 数据传输
流程
image.png请求分析
GET /upload/iou/APP_FILE/ylzg-resource.zip?auth_key=1548988144918-9b872976b9564a6930b8c7df6c1dbaaf HTTP/1.1
Host yltest.xylpay.com
Accept */*
Accept-Language zh-cn
Connection keep-alive
Accept-Encoding br, gzip, deflate
User-Agent ylzg-qa/4.0.6.2 CFNetwork/902.2 Darwin/17.7.0
- 请求行
- 请求方法
- 请求路径
- 协议版本号
- 请求头
- key-value 键值对
- 常见请求头 Host, Connection, User-Agent 等
- 请求体
- 请求体是可选的
响应格式
HTTP/1.1 200 <!--状态行-->
Server: nginx/1.9.3
Date: Fri, 01 Feb 2019 06:31:11 GMT
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Vary: Accept-Encoding
X-Application-Context: gateway-portal:QA,test:8041
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
X-Frame-Options: DENY
X-Ab-Gray: stable
Content-Encoding: gzip
Connection: keep-alive
{"content":[{...}]}<!--响应体内容-->
状态码:200 ok
304 Not Modified 3% 缓存相关
404 Not Found
500 Internal Server Error 服务器内部错误
- 响应头
- key:value
Server 服务器使用的应用程序返回内容(Web 服务器)
Content-Type 内容类型;音频 HTML 视频等
Content-Length 内容长度(为一次链接多次请求适配)
- key:value
- 相应体
- 与响应头空行分割 \r\n
- 可以是文本或二进制
- 大小由响应头中的 Content-Length 指定
网友评论