【***** HTTP 协议 *****】—— HTTP 请求

编辑一个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:

  1. 请求参数在请求行中,在url后。
  2. 请求的url长度有限制的
  3. 不太安全

POST:

  1. 请求参数在请求体中
  2. 请求的url长度没有限制的
  3. 相对安全

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

字符串格式:

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

猜你喜欢

转载自blog.csdn.net/weixin_42112635/article/details/86617870