HTTP协议
传输协议
- 规定客户端和服务器通信时,发送数据的格式
概述
- 超文本传输协议
特点
- 基于TCP/IP的高级协议
- 默认端口号:80
- 基于请求/响应模型:一次请求对应一次响应
- 无状态的:每次请求之间相互独立,不能交互数据
历史版本
- 1.0 :每一次请求都会建立新的连接
- 1.1 :复用连接(提高效率)
- 2.0 :
- 连接复用 允许通过 HTTP/2 连接发起多重的请求-响应
- 新增首部压缩 采用HPACK算法
- 新增服务端推送
请求消息数据格式
请求行
- 请求方式 资源url地址 请求的协议/版本
例: GET /day16/hello.html HTTP/1.1
请求头(常用)
客户端告诉服务器的一些信息(请求头是键值对格式的)
Accept
(请求的文件类型) 例: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,/;q=0.8Accept-Encoding
(请求的编码格式) 例: gzip, deflateAccept-Language
(语言) 例: zh-CN,zh;q=0.9Content-Length
(请求的内容长度) 例: 33Connection
(连接状态) 例: keep-alive- keep-alive 设置该连接为常连接
Host
(请求域名) 例: localhost:8080User-Agent
(客户端的相关信息) 例: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0Referer
(请求来源):- 作用:
- 防盗链
- 统计工作
- 作用:
请求空行
是一个空行 用来分割请求头和请求体的
请求体
post请求的请求参数
响应消息数据格式
响应行
- 协议/版本 响应状态码 状态码描述
例: HTTP/1.1 200 描述…
响应头(常用)
服务器告诉客户端的一些信息(响应头是键值对格式的)Content-Length
(响应的内容长度) 例: 19Content-Type
(响应的数据格式及编码格式) 例: text/html;charset=utf-8Content-disposition
(响应数据的打开方式) 例: in-line
- in-line:默认值 ; 在当前页面内打开
- attachment;filename=xxx 以附件的形式打开响应体=文件下载
响应空行
是一个空行 用来分割响应头和响应体的
响应内容
给客户端传输的数据
常见请求方式:
get请求与post请求的区别
- GET (没有请求体)
- 请求的参数在url路径后
- 请求的url长度有限制
- 不太安全
- POST
- 请求的参数在请求体中
- 请求的url长度没有限制
- 相对安全
常见的http状态码:
- 200 :请求成功
- 301 :资源移动。所请求资源自动到新的URL,浏览器自动跳转到新的URL
- 304 :请求缓存服务端的资源与客户端上一次请求的一致,不需要重新传输,客户端使用本地缓存的即可
- 400 :错误请求
- 404 :(资源丢失)未找到资源
- 500 :服务器内部错误
请求转发与请求重定向
转发和重定向都是实现页面跳转
- 转发:在服务端内部的资源跳转方式,转发之后 当前操作的后续代码会执行
- 地址栏不发生变化
- 转发只能转发服务器内部的资源
- 转发是一次请求
- 重定向:客户端操作,后续代码会执行
- 地址栏发生变化
- 重定向可以访问任意资源
- 重定向是两次请求