HTTP简介
概念
超文本传输协议,定义了客户端和服务器端通信时,发送和接受数据的格式。
协议特点
- 基于TCP/IP的高级协议
- 默认端口号是80
- 基于请求/响应模型的:一次请求对应一次响应
- 无状态的,每次请求之间相互独立,不能交互数据。
历史版本
1.0 : 每一次请求都会相应新的连接
1.1 : 如果两次地址一样可以复用连接
请求消息数据格式
1.请求行
请求方式 请求url 请求协议/版本
GET /login.html HTTP/1.1
HTTP协议有7中请求方式,常用的有两种
- GET:
- 请求参数在请求行中,在url后
- 请求的url长度有限制的
- 不太安全(肉眼可见)
- POST:
- 请求参数在请求体中
- 请求的url长度没有限制的
- 相对安全(在请求体内)
2.请求头
请求头名称: 请求头值
常见的请求头有:
- User-Agent:浏览器告诉服务器,浏览器自己的版本信息,这样做可以保证浏览器的兼容问题
- Referer:http://localhost/login.html 告诉服务器,我(当前请求)从哪里来。可以用来防盗链和统计工作。
3.请求空行
空行, 用于分割POST请求的请求头和请求体。
4.请求体
请求行 POST /login.html HTTP/1.1
请求头 Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:73.0) Gecko/20100101 Firefox/73.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: keep-alive
Referer: http://search.bilibili.com
Cookie: JSESSIONID=07DFB352A5D840658715BA1B0F6EE029
Upgrade-Insecure-Requests: 1
空行
请求体 username=lisi
Request 详解
1. request对象和response对象的原理
1. request和response对象是由服务器创建的。我们来使用它们
2. request对象是来获取请求消息,response对象是来设置响应消息