HTTP协议,带你了解HTTP协议

news2024/11/25 18:45:17

目录

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 协议的基本知识和使用方法。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/647920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Seata分布式事务实现

docker方式搭建seata-server(推荐) 参考官方文档: 使用 Docker 部署 Seata Server docker run -d --name seata-server -p 8091:8091 -p 7091:7091 seataio/seata-server:1.6.1 根据版本情况使用不同版本的镜像: https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7…

算法拾遗三十三Morris遍历

算法拾遗三十三Morris遍历 常规二叉树遍历Morris遍历Morris遍历判断是否是搜索二叉树给定一颗二叉树的头节点head&#xff0c;求以head为头的树中&#xff0c;最小深度是多少&#xff1f; 常规二叉树遍历 public static class Node {public int value;Node left;Node right;pub…

UE4/5样条线学习(二):样条网格体组件的使用

目录 效果展示&#xff1a; 制作&#xff1a; 效果展示&#xff1a; 制作&#xff1a; 前面的步骤和之前的UE4/5样条线学习&#xff08;一&#xff09;&#xff1a;基础的样条线使用_多方通行8的博客-CSDN博客是一样的。 创建一个actor蓝图&#xff0c;然后一个公告板组件&…

Redis Lua脚本书写

目录 1. 级联缓存值 1.1 级联缓存session及相关信息 lua脚本语句 redis运行示例 2. 级联查询 2.1 级联查询session lua脚本语句 redis运行示例 3. 级联更新 3.1 级联更新accountId对应的用户信息 lua脚本 redis运行示例 4. 级联续期 4.1 刷新session时级联续期 lu…

嵌入式数据库之sqlite3

一、数据库基本概念 数据&#xff1a;能够输入计算机并能被计算机程序识别和处理的信息集合。 数据库&#xff1a;数据库是在数据库管理系统管理和控制之下&#xff0c;存放在存储介质上的数据集合。 二、常用的数据库 1.大型数据库 Oracle公司是最早开发关系数据库的厂商之一…

架构设计之分析系统性能问题

我们在讨论高性能架构之前&#xff0c;需要先聊聊什么叫高性能&#xff0c;以及如何量化地测试系统的性能。在02 讲中&#xff0c;我们讨论了一些和并发相关的指标。事实上&#xff0c;并发数正是系统性能的核心指标之一&#xff0c;因为高并发会引起系统资源短缺&#xff0c;来…

【夜深人静学数据结构与算法 | 第二篇】后缀(逆波兰)表达式

目录 前言&#xff1a; 中缀表达式&#xff1a; 后缀表达式&#xff1a; 中缀表达式转后缀表达式&#xff1a; 后缀表达式计算结果&#xff1a; 总结&#xff1a; 前言&#xff1a; 计算机在计算四则运算的时候&#xff0c;由于括号以及运算优先级的存在&#xff0c;并不…

大数据Doris(四十一):Routine Load严格模式和导入案例

文章目录 Routine Load严格模式和导入案例 一、严格模式 二、严格模式导入Kafka数据到Doris Routine Load严格模式和导入案例

【Thunder送书 | 第三期 】「Python系列丛书」

文章目录 前言《Python高效编程——基于Rust语言》《Python从入门到精通》《Python Web深度学习》《Python分布式机器学习》文末福利 | 赠书活动 前言 Thunder送书第三期开始啦&#xff01;前面两期都是以【文末送书】的形式开展&#xff0c;本期将赠送Python系列丛书&#xff…

下载安装Visual Studio 2017 Community 来编译NIM_PC_DEMO

1、下载vs2017的引导程序 官方并没有为vs2017提供离线安装包&#xff0c;所以我们选择在线安装。 首先我们下载vs2017的引导程序&#xff1a;Visual Studio 2017安装包 包含如下4个文件&#xff1a; vs_Community.exe&#xff1a; 社区版&#xff0c;免费。但是需要登录微软…

第四节 字符串

文章目录 字符串1.1 字符串介绍1.2 字符串的定义1.3 字符串的输入和输出1.3.1 字符串的索引 1.4 字符串切片1.4.1 切片几种写法 1.5 字符串常用函数1.5.1 find()1.5.2 index()1.5.3 扩展知识: rfind()和rindex()1.5.4 count()1.5.5 replace()1.5.6 split()1.5.7 join() 1.6 字符…

C++常用STL容器--list

C常用STL容器--list list基本概念list构造函数list赋值、交换list大小操作list插入、删除list数据获取list反转、排序 list基本概念 功能&#xff1a; 将数据进行链式存储 链表(list) 是一种物理存储单元上非连续的存储结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针…

高并发架构设计方法

我们知道&#xff0c;“高并发”是现在系统架构设计的核心关键词。一个架构师如果设计、开发的系统不支持高并发&#xff0c;那简直不好意思跟同行讨论。但事实上&#xff0c;在架构设计领域&#xff0c;高并发的历史非常短暂&#xff0c;这一架构特性是随着互联网&#xff0c;…

Linux之配置网络

目录 Linux之配置网络 网络接口 网络类型符号 类型 设备类型或位置选择 类型 网络连接 网络配置 三种方法 方法1 --- 使用nmtui进行网路配置 方法2 --- 使用nmcli设置 方法3 --- 修改配置文件 方法4 --- cockpit配置示意图 使用ip命令配置临时生效的网络连接 测试网…

chatgpt赋能python:Python收集数据的介绍

Python收集数据的介绍 Python是一个多功能的编程语言&#xff0c;其拥有强大的数据收集和分析功能。为了充分利用Python的数据处理和挖掘功能&#xff0c;一些优秀的数据收集工具被开发出来。在本文中&#xff0c;我们将介绍如何使用Python收集数据&#xff0c;并介绍一些常用…

总结900

目标规划&#xff1a; 月目标&#xff1a;6月&#xff08;线性代数强化9讲&#xff0c;考研核心词过三遍&#xff09; 周目标&#xff1a;线性代数强化3讲&#xff0c;英语背3篇文章并回诵&#xff0c;检测 每日规划 今日已做 1.读六级阅读 2.完成学习通考试(没做计划) 3.阅…

[编程工具]Unity配表导出工具TableExporter1.1

[ 目录 ] 0. 前言1. 属性拓展优化&#xff08;1&#xff09;反射获取转化函数 TryParse&#xff08;2&#xff09;反射获取EmptyReplace&#xff08;3&#xff09;属性类型&#xff08;4&#xff09;属性拓展 2. 模板处理&#xff08;1&#xff09;替换内容&#xff08;2&#…

chatgpt赋能python:Python如何放大界面——实用技巧

Python如何放大界面——实用技巧 在Python中&#xff0c;很多时候我们需要放大界面来更清楚的展示内容。这篇文章将介绍Python放大界面的方法。 放大界面的原理 在Python中&#xff0c;放大界面的原理实际上就是改变窗口的大小。我们可以通过改变窗口的尺寸实现放大效果。 …

LuatOS-Air AT应用指南--RNDIS

简介 RNDIS是指Remote NDIS&#xff0c;基于USB实现RNDIS实际上就是TCP/IP over USB&#xff0c;就是在USB设备上跑TCP/IP&#xff0c;让USB设备看上去像一块网卡。从而使Windows /Linux可以通过 USB 设备连接网络。 Window系统 window系统支持RNDIS直接用usb连接就可以使用&a…

2023/6/14总结

JS的学习&#xff1a; JavaScript是一种运行在客户端&#xff08;浏览器&#xff09;的编程语言&#xff0c;实现人机交互的效果 主要作用&#xff1a; 网页特效表单验证数据交互 JS的组成 ECMAScript 规定了js基础的语法核心知识 Web APIs DOM:操作文档&#xff0c;对页面…