目录
1、HTTP 协议介绍
2、HTTP 协议的工作过程
HTTP 协议的工作过程可以分为以下几个步骤:
3、Fiddler 抓包工具介绍
3.1 抓包工具的使用
3.2 抓包结果
3.3 抓包工具原理
4、HTTP 协议格式总览
5、HTTP 请求(Request)
5.1 认识 URL
5.2 认识“方法”(method)
GET 方法:
POST 方法:
GET 和 POST 的区别:
关于 GET 请求的 URL 长度问题的误解:
关于 POST 比 GET 更安全的误解:
关于 GET 只能传输文本数据的误解:
5.3 认识请求“报头”(header)
6、 HTTP 响应(Response)
6.1 认识“状态码”(status code)
6.2 认识响应“报头”(header)
7、 通过 form 表单构造 HTTP 请求
7.1 发送 GET 请求
总结·
1、HTTP 协议介绍
HTTP(HyperText Transfer Protocol)是一种用于传输超文本的协议,是互联网上应用最为广泛的协议之一。HTTP 协议是基于客户端-服务器模式工作的,客户端向服务器发送请求,服务器返回响应。HTTP 协议是无状态的,也就是说服务器不会记录客户端的状态信息,每次请求都是独立的。
2、HTTP 协议的工作过程
HTTP 协议的工作过程可以分为以下几个步骤:
1. 客户端向服务器发送请求。
2. 服务器接收到请求后,根据请求的 URL 和请求方法(GET、POST 等)来处理请求。
3. 服务器处理请求后,返回响应给客户端。
4. 客户端接收到响应后,根据响应状态码和响应内容来处理响应。
3、Fiddler 抓包工具介绍
Fiddler 是一款免费的抓包工具,可以用来捕获 HTTP 和 HTTPS 流量。Fiddler 可以帮助开发人员和测试人员分析和调试网络应用程序,也可以用来查看网络请求和响应的详细信息。
3.1 抓包工具的使用
使用 Fiddler 抓包工具可以分为以下几个步骤:
1. 下载并安装 Fiddler 抓包工具。
2. 打开 Fiddler 抓包工具,点击“启动”按钮。
3. 在浏览器中访问需要抓包的网站。
4. 在 Fiddler 工具中查看抓包结果。
3.2 抓包结果
Fiddler 抓包工具可以显示请求和响应的详细信息,包括请求方法、URL、请求头、请求体、响应状态码、响应头、响应体等。
3.3 抓包工具原理
Fiddler 抓包工具的原理是通过代理服务器来捕获网络流量。当客户端发送请求时,请求会先经过 Fiddler 代理服务器,然后再转发给目标服务器。服务器返回响应时,响应也会经过 Fiddler 代理服务器,然后再返回给客户端。因此,Fiddler 抓包工具可以捕获客户端和服务器之间的所有网络流量。
4、HTTP 协议格式总览
HTTP 协议的格式可以分为请求格式和响应格式两种。请求格式由请求行、请求头和请求体组成,响应格式由状态行、响应头和响应体组成。
请求格式:
请求行
请求头
请求体
响应格式:
状态行
响应头
响应体
5、HTTP 请求(Request)
HTTP 请求由请求行、请求头和请求体组成。
5.1 认识 URL
URL(Uniform Resource Locator)是统一资源定位符的缩写,用于标识互联网上的资源。URL 包含协议、主机名、端口号、路径和查询参数等信息。
URL 基本介绍:
协议://主机名:端口号/路径?查询参数
URL 基本格式:
http://www.example.com/index.html?name=张三&age=18
URL 参数介绍:
URL 参数是指在 URL 中通过查询字符串传递的参数,格式为“key=value”,多个参数之间用“&”符号分隔。
URLencode 介绍:
URLencode 是一种将 URL 中的特殊字符转换为 ASCII 码的编码方式,以便于在 URL 中传递。例如,空格会被转换为“%20”,中文会被转换为“%E4%BD%A0%E5%A5%BD”。
5.2 认识“方法”(method)
HTTP 请求方法是指客户端向服务器发送请求时所使用的方法,常见的方法有 GET 和 POST。
GET 方法:
GET 方法用于请求指定的页面或资源,并返回响应。GET 方法的请求参数会附加在 URL 后面,以“?”符号分隔。例如:
GET /index.html?name=张三&age=18 HTTP/1.1
Host: www.example.com
POST 方法:
POST 方法用于向服务器提交数据,并返回响应。POST 方法的请求参数会包含在请求体中,而不是附加在 URL 后面。例如:
POST /login HTTP/1.1
Host: www.example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 23
name=张三&age=18
GET 和 POST 的区别:
GET 方法和 POST 方法的区别在于请求参数的传递方式不同。GET 方法的请求参数会附加在 URL 后面,而 POST 方法的请求参数会包含在请求体中。因此,GET 方法适合传输少量的数据,而 POST 方法适合传输大量的数据。
关于 GET 请求的 URL 长度问题的误解:
有些人认为 GET 请求的 URL 长度有限制,实际上这是一个误解。HTTP 协议并没有规定 GET 请求的 URL 长度有限制,而是浏览器和服务器对 URL 长度进行了限制。不同的浏览器和服务器对 URL 长度的限制也不同,一般来说,URL 长度不应超过 2048 个字符。
关于 POST 比 GET 更安全的误解:
有些人认为 POST 方法比 GET 方法更安全,实际上这也是一个误解。POST 方法和 GET 方法一样,都是明文传输数据,只是请求参数的传递方式不同。如果需要保证数据的安全性,可以使用 HTTPS 协议来加密传输数据。
关于 GET 只能传输文本数据的误解:
有些人认为 GET 方法只能传输文本数据,实际上这也是一个误解。GET 方法和 POST 方法一样,都可以传输任意类型的数据,只是请求参数的传递方式不同。
其它方法:
除了 GET 方法和 POST 方法,HTTP 协议还定义了其它一些方法,例如 PUT、DELETE、HEAD、OPTIONS 等。这些方法的使用场景不同,可以根据具体的需求来选择使用。
5.3 认识请求“报头”(header)
HTTP 请求头是指客户端向服务器发送请求时所附带的信息,常见的请求头有 Host、Content-Length、Content-Type、User-Agent、Referer、Cookie 等。
Host:
Host 请求头用于指定请求的主机名和端口号,格式为“Host: 主机名:端口号”。
Content-Length:
Content-Length 请求头用于指定请求体的长度,格式为“Content-Length: 长度”。
Content-Type:
Content-Type 请求头用于指定请求体的类型,常见的类型有 application/x-www-form-urlencoded、multipart/form-data、application/json 等。
User-Agent(简称 UA):
User-Agent 请求头用于指定客户端的类型和版本号,常见的客户端有浏览器、爬虫、移动设备等。
Referer:
Referer 请求头用于指定请求的来源页面,常用于防盗链和统计分析。
Cookie:
Cookie 请求头用于指定客户端的会话标识,常用于实现用户登录和会话管理。
6、 HTTP 响应(Response)
HTTP 响应由状态行、响应头和响应体组成。
6.1 认识“状态码”(status code)
HTTP 响应状态码是指服务器返回响应时所附带的状态码,常见的状态码有 200 OK、404 Not Found、403 Forbidden、405 Method Not Allowed、500 Internal Server Error、504 Gateway Timeout、302 Move temporarily、301 Moved Permanently 等。
200 OK:
200 OK 表示请求成功,服务器返回了请求的资源。
404 Not Found:
404 Not Found 表示请求的资源不存在。
403 Forbidden:
403 Forbidden 表示请求被服务器拒绝,通常是因为客户端没有访问权限。
405 Method Not Allowed:
405 Method Not Allowed 表示请求方法不被允许,通常是因为客户端使用了不支持的请求方法。
500 Internal Server Error:
500 Internal Server Error 表示服务器内部错误,通常是因为服务器无法处理请求。
504 Gateway Timeout:
504 Gateway Timeout 表示网关超时,通常是因为服务器无法在规定的时间内返回响应。
302 Move temporarily:
302 Move temporarily 表示请求的资源已经被临时移动到了另一个 URL。
301 Moved Permanently:
301 Moved Permanently 表示请求的资源已经被永久移动到了另一个 URL。
6.2 认识响应“报头”(header)
HTTP 响应头是指服务器返回响应时所附带的信息,常见的响应头有 Content-Type 等。
Content-Type:
Content-Type 响应头用于指定响应体的类型,常见的类型有 text/html、application/json、image/jpeg 等。
7、 通过 form 表单构造 HTTP 请求
7.1 发送 GET 请求
通过 form 表单发送 GET 请求可以使用以下代码:
<form action="http://www.example.com/index.html" method="get">
<input type="text" name="name" value="张三">
<input type="text" name="age" value="18">
<input type="submit" value="提交">
总结·
本文主要介绍了 HTTP 协议的基本概念和工作过程,以及 Fiddler 抓包工具的使用方法和原理。在 HTTP 请求中,介绍了 URL 的基本格式和参数,以及 GET 和 POST 方法的区别和常见误解。同时,还介绍了请求报头中常见的字段,如 Host、Content-Length、Content-Type、User-Agent、Referer 和 Cookie。在 HTTP 响应中,介绍了常见的状态码和响应报头中的 Content-Type 字段。最后,本文还介绍了如何通过 form 表单和 ajax 构造 HTTP 请求,包括发送 GET 和 POST 请求的方法。本文内容详实,适合初学者了解 HTTP 协议的基本知识和使用方法。