编辑一个form.html
的表单页面,如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="#" method="post">
<input type="text" value="username"><br>
<input type="password" value="password"><br>
<input type="submit" value="测试HTTP请求"><br>
</form>
</body>
</html>
点击提交按钮,抓包如下:
客户端请求消息
客户端发送一个HTTP请求到服务器的请求消息包括以下格式:请求行(request line)、请求头部(header)、空行和请求数据四个部分组成,下图给出了请求报文的一般格式。
HTTP 请求组成:
1、请求行
格式:请求方式 请求url 请求协议/版本
- 请求方式:POST、GET
- 请求url:/DemoEE/form.html
- 协议版本:HTTP/1.1
HTTP/1.0,发送请求,创建一次连接,获得一个web资源,连接断开。
HTTP/1.1,发送请求,创建一次连接,获得多个web资源,保持连接。
HTTP请求方式
根据HTTP标准,HTTP请求可以使用多种请求方法。
HTTP1.0定义了三种请求方法: GET, POST 和 HEAD方法。
HTTP1.1新增了五种请求方法:OPTIONS, PUT, DELETE, TRACE 和 CONNECT 方法。
方法 | 描述 |
---|---|
GET | 请求指定的页面信息,并返回实体主体。 |
HEAD | 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头 |
POST | 向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。 |
PUT | 从客户端向服务器传送的数据取代指定的文档的内容。 |
DELETE | 请求服务器删除指定的页面。 |
CONNECT | HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。 |
OPTIONS | 允许客户端查看服务器的性能。 |
TRACE | 回显服务器收到的请求,主要用于测试或诊断。 |
补充:GET 与 POST 的区别
GET:
- 请求参数在请求行中,在url后。
- 请求的url长度有限制的
- 不太安全
POST:
- 请求参数在请求体中
- 请求的url长度没有限制的
- 相对安全
2、请求头
请求头是客户端发送给服务器端的一些信息,使用键值对表示key:value(请求头名称: 请求头值)
常见请求头 | 描述 (红色掌握,其他了解) |
---|---|
Referer | 浏览器通知服务器,当前请求来自何处。如果是直接访问,则不会有这个头。常用于:防盗链、统计工作 |
If-Modified-Since | 浏览器通知服务器,本地缓存的最后变更时间。与另一个响应头组合控制浏览器页面的缓存。 |
Cookie | 与会话有关技术,用于存放浏览器缓存的cookie信息。 |
User-Agent | 浏览器通知服务器,客户端浏览器与操作系统相关信息。可以在服务器端获取该头的信息,解决浏览器的兼容性问题 |
Connection | 保持连接状态。Keep-Alive 连接中,close 已关闭 |
Host | 请求的服务器主机名 |
Content-Length | 请求体的长度 |
Content-Type | 如果是POST请求,会有这个头,默认值为application/x-www-form-urlencoded,表示请求体内容使用url编码 |
Accept: | 浏览器可支持的MIME类型。文件类型的一种描述方式。MIME格式:大类型/小类型[;参数]。例如:text/html ,html文件。text/css,css文件。text/javascript,js文件。 image/*,所有图片文件 |
Accept-Encoding | 浏览器通知服务器,浏览器支持的数据压缩格式。如:GZIP压缩 |
Accept-Language | 浏览器通知服务器,浏览器支持的语言。各国语言(国际化i18n) |
补充:防盗链
3、请求空行
空行,就是用于分割POST请求的请求头,和请求体的。
4、请求体
当请求方式是 POST 的时,请求体会有请求的参数,格式如下:
username=zhangsan&password=123
如果请求方式为get,那么请求参数不会出现在请求体中,会拼接在url地址后面
http://localhost:8080…?username=zhangsan&password=123
扫描二维码关注公众号,回复:
5094457 查看本文章
字符串格式:
POST /login.html HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;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
Referer: http://localhost/login.html
Connection: keep-alive
Upgrade-Insecure-Requests: 1
username=zhangsan