概念
- 无状态超文本传输协议,默认端口80
- 基于请求与响应,TCP/IP的应用层协议,规定客户端服务器数据传输格式
- 无状态:不对之前请求或响应的状态进行管理(现在用cookie管理状态)
- 无连接:每次只处理一个请求,服务器处理完,客户端应答后,就断开
请求报文组成
-
请求行
方式(head,put,options,delete)、路径、版本HTTP1.1 -
请求头
让浏览器知道的信息,常见属性:
Cache-Control: no-cache
Pragma:no-cache
Connection:keep-alive
content-type: application/json
Authorization:web认证信息(token有使用,把token放这个字段传到后端)
-
请求体
get没有,post有
响应报文
- 组成:响应行、响应头、空行、响应体
- 常见响应头属性:
ETag:响应服务端资源,ETag随这个资源发生变化(登录页有使用)
Set-Cookie:通知客户端保存cookie
Connection:keep-alive
content-type: application/json
状态码
- 1xx:提示
- 2xx:成功200
- 3xx:重定向(304资源未修改)(301永久重定向)(302临时重定向)
- 4xx:客户端错误(404无法找到资源)(401身份验证)
(400语法错误,content-type字段不一致)
(405请求方式错误,get用成了post
)
(403forbbiden访问微信小程序图片出现,解决方法用meta标签的一个属性no-referrer
) - 5xx:服务端错误(500服务器内部错误)(503超载或维护)
URL
- 协议
- 域名
- 端口(隐藏了,在域名后面输入:80还是这个网页,说明默认就是80,https为443)
- 虚拟目录、文件名、锚、参数(不重要)
HTTPS
- 默认端口443
- HTTP明文传递
- HTTPS由SSL(安全套接层)+HTTP构建的可加密传输、身份验证的协议,ca证书
encodeURL()和encodeURLComponent()编码
- 解码方法为decodeRUL和decodeURLComponent
- url作为参数传递时,没有用encodeURLComponent(),会造成url中特殊字符丢失
当在浏览器输入大括号{},会被自动编码,但是后端能收到正常数据
HTTP1.0和HTTP1.1
- HTTP1.1实现了默认长连接
connection:keep-alive
- HTTP1.1封装更好
- 管道化:不用等待响应就可以发送下一个请求