Http协议的特点
HTTP协议的特点
- 基于请求/响应模型的协议。
- 请求和响应必须成对;
- 先有请求后有响应。
- 简单快捷
- 因为发送请求的时候只需要发送请求方式和请求路径即可
- HTTP协议默认的端口:80
- 例如:
http://www.baidu.com:80
- 例如:
Http协议的版本
- HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开。
- HTTP/1.1,发送请求,创建一次连接,获得多个web资源,连接断开。
HTTP协议有两种报文格式:
- 请求报文:由客户端向服务器端发出的报文。
- 响应报文:从服务端到客户端的报文。
Http协议详解
Http请求报文详解
HTTP请求报文:由客户端向服务器端发出的报文。
HTTP请求报文格式:包含请求行、请求头、空行、请求体 四个部分
请求行
例如:POST /web01/login.html HTTP/1.1
请求行必须在HTTP请求格式的第一行。
请求行格式:请求方式 资源路径 协议/版本
请求方式:协议规定7种,常用两种:GET和POST
GET请求:
将请求参数追加在URL后面,不安全。例如:login.html?username=tom&password=1234
URL长度限制GET请求方式的数据大小。
没有请求体
POST请求
请求参数显示请求体处,较安全。
请求数据大小没有显示。
只有表单设置为method=”post”才是post请求.其他的都是get请求。
常见GET请求:地址栏直接访问、<a href=””>、<img src=””> 等
请求头
请求头: 描述了客户端向服务器发送请求时使用的http协议类型,所使用的编码,以及发送内容的长度,referer,等等。
请求头也是用的键值对key:value
常见请求头 | 描述 |
---|---|
Referer | 浏览器通知服务器,当前请求来自何处。如果是直接访问,则不会有这个头。常用于:防盗链 |
Cookie | 与会话有关技术,用于存放浏览器缓存的cookie信息。 |
User-Agent | 浏览器通知服务器,客户端浏览器与操作系统相关信息 |
请求体
通常情况下,只有post请求方式才会使用到请求体,请求体中都是用户表单提交的数据,每一项数据都使用键值对key=value,多组值使用&相连。
例如;username=tom&password=1234
Http请求报文演示
-
创建页面,编写“login.html”,并提供表单,分别设置表单的提交方式为:get和post。将表单提交位置设置成#,表示提交到当前表单。
<form action="#" method="post">
用户名:<input type="text" name="username" value=""/> <br/>
密 码:<input type="text" name="password" value=""/> <br/>
<input type="submit" />
</form>
观看下图,我们采用GET请求方式、POST请求方式的抓包结果:(Chrome浏览器)
-
GET请求抓包数据:
-
POST请求抓包数据:
2.2 Http响应报文详解
响应报文:从服务端到客户端的报文。
HTTP响应报文格式:响应行、响应头、空行、响应体 四个部分
响应行
例如:HTTP/1.1 200 OK
格式:协议/版本 状态码 状态码描述
状态码:服务器与浏览器用于确定状态的固定数字号码
200 :请求成功。
302 :请求重定向。
304 :请求资源没有改变,访问本地缓存。
404 :请求资源不存在。通常是用户路径编写错误,也可能是服务器资源已删除。
500 :服务器内部错误。通常程序抛异常。
响应头
响应头: 用来描述服务器回给客户端浏览器的content的一些描述,例如: 我是什么服务器,我返回的是啥编码,我返回的内容有多长等等
响应头也是用的键值对 key:value
常见请求头 | 描述 |
---|---|
Location | 指定响应的路径,需要与状态码302配合使用,完成跳转。 |
Content-Disposition | 文件下载的时候使用。通过浏览器以下载方式解析正文 |
Set-Cookie | 与会话相关技术。服务器向浏览器写入cookie |
Refresh | 定时刷新 |
响应体
响应体,就是服务器发送给浏览器的正文。
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="#" method="post">
用户名:<input type="text" name="username" value=""/> <br/>
密 码:<input type="text" name="password" value=""/> <br/>
<input type="submit"/>
</form>
</body>
</html>
Http响应报文演示
如下图,我们提供的响应的抓包结果(Chrome浏览器)