# HTTP协议基础
# 什么是HTTP协议
协议是一组规则,用于指定计算机应该如何通过网络来相互通信。
HTTP协议,即按照一定规则,向服务器请求数据,或发送数据;而服务器按照一定的规则,回应数据
Hyper Text Transfer Protocol (超文本传输协议)
用于从万维网服务器传输超文本到本地浏览器的传送协议
HTTP协议是基于TCP的应用层协议,它不关心数据传输的细节,主要是用来规定客户端和服务器端的数据传输格式,最初是用来向客户端传输HTML页面的内容。默认端口是80
HTTP 是基于请求与响应模式的、无状态、应用层的协议
# HTTP请求报文
HTTP请求报文主要由 请求行、请求头、空一行、请求体 四部分组成
# 请求行
请求行的组成: 请求方法(get/post) URL 协议版本
# 请求方法(Request Method)
以什么方式处理资源、进行请求
| 请求方法 | 备注 | 
|---|---|
| GET | 请求资源 | 
| POST | 提交资源 | 
| Head | 获取响应头 | 
| PUT | 替换资源 | 
| DELETE | 删除资源 | 
| OPTIONS | 允许客户端查看服务器的性能 | 
| TRACE | 回显服务器收到的请求,用于测试或诊断 | 
# URL
Uniform Resource Locator : 统一资源定位符
用于描述网上的资源
格式: schema://host[:port#]/path/.../[?query-string]
- scheme:协议,如HTTP,HTTPS,ftp等
- host:域名或IP地址
- port:端口
- path:资源路径
- query-string:发送的参数
# 请求头
附加的、需要服务器需要知道的一些信息
| 请求头 | 描述 | 
|---|---|
| Host | 主机IP地址或域名 | 
| User-Agent | 客户端相关信息,如操作系统、浏览器等信息 | 
| Accept | 指定客户端接收信息类型,如:image/jpg, text/html, application | 
| Accept-Charset | 客户端接受的字符集,如gb2312 , iso-8859-1 | 
| Accept-Ecoding | 可接受的内容编码,如gzip | 
| Accept-Language | 接受的语言,如Accept-Language:zh-cn | 
| Authorization | 客户端提供给服务端,及性能权限认证的信息 | 
| Cookie | 携带的cookie信息 | 
| Referer | 当前文档的URL,即从哪个链接过来的 | 
| Content-Type | 请求体内容类型,如Content-Type:application/x-www-from-url | 
| Content-Length | 数据长度 | 
| Cache-Control | 缓存机制,如Cache-Control:no-cache | 
| Pragma | 防止页面被缓存,和Cache-Control:no-cache作用一样 | 
# 请求体
get请求方法没有请求体
# HTTP响应报文
HTTP响应报文主要由 状态行、响应头、空一行、响应体四部分组成
# 状态行
协议 + 状态码
# 状态码(Status Code)
用以表示网页服务器HTTP响应状态的3位数字代码
| 状态码 | 描述 | 
|---|---|
| 1XX | 提示信息,请求被成功接收 | 
| 2XX | 成功,请求被成功处理 | 
| 3XX | 重定向相关 | 
| 4XX | 客户端错误 | 
| 5XX | 服务器端错误 | 
# 响应头(Request Header)
| 响应头 | 描述 | 
|---|---|
| Server | HTTP服务器的软件信息 | 
| Date | 响应报文的事件 | 
| Expires | 指定缓存过期时间 | 
| Set-Cookie | 种Cookie | 
| Last-Modified | 资源最后修改时间 | 
| Content-Type | 响应的类型和字符集 | 
| Content-Length | 内容长度 | 
| Connection | 如Keep-Alive,表示保持tcp连接不关闭 | 
| Location | 致命重定向的位置,新的URL地址,如304情况 | 
# 响应体
根据请求相应的HTML内容
← 七层模型
