HTTP协议,带你了解HTTP协议

目录

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.hqwc.cn/news/9920.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter 轮播图 flutter_swiper属性说明使用

今天分享的内容是关于图片轮播的实现&#xff0c;使用到的库是flutter_swiper&#xff0c;如果有出现空检查报错的&#xff0c;可以使用flutter_swiper_null_safety 轮播图效果如下&#xff1a; 先贴出基本参数详解&#xff1a; 参数说明itemBuilder列表的构造indicatorLayou…

【物联网无线通信技术】LoRa从理论到实现(SX1268)

文章先从LoRa的物联网通信技术前辈们讲起&#xff0c;慢慢引出了这种功耗又低&#xff0c;距离又远的无线通信技术&#xff0c;然后又似庖丁解牛一般&#xff0c;从物理层到链路层&#xff0c;详细的介绍了LoRa这种技术的组成&#xff0c;最后以一种实际的原理与嵌入式软件实现…

AI 如何应对 DevOps 监控和可观察性挑战

持续监控和可观察性用例 CI异常检测&#xff1a; AI可以分析历史数据以检测持续集成阶段的异常。任何不寻常的变化都可以在进入下一阶段之前进行标记以供审查。IBM Watson AnomalyDetection 等工具可以通过使用 AI 检测模式和异常情况来帮助识别这些异常情况。 代码质量保证&…

在SpringBoot中对es集群的查询操作

在进行查询之前要先给ll索引中插入数据: POST /ll/product/1 {"id":1,"title": "小米手机Mix","category": "手机","brand": "小米","price": 2899.00,"images": "http://ima…

51单片机驱动 mg996r金属舵机 STC89C52单片机直接驱动金属大舵机

/*无论是大舵机&#xff0c;还是小舵机&#xff0c;控制方法都一样会区别在 大舵机只能接P0口&#xff08;此口外接上拉&#xff0c;驱动电流最大&#xff09;小舵机任意口 */ //#include<reg51.h> //#define uint unsigned int //#define uchar unsigned char //sbit S…

Django框架-6

向服务器传参 通过url - path传参 path(articles/<int:year>/<int:month>/<slug:slug>/, views.article_detail),查询字符串方式传参 http://localhost:8000?key1value1&key2value2 ;&#xff08;body&#xff09;请求体的方式传参&#xff0c;比如文…

Mysql数据NULL避坑指南

NULL空值是mysql中一种特殊的数据值&#xff08;即"缺少的未知值"&#xff09;,NULL和字符串空值不是一回事&#xff0c;处理NULL与其他值不同&#xff0c;下面具体阐述相关差异&#xff1a; 一、NULL运算符 1、普通数据使用 > 、 < 、即可做常用的逻辑运算如…

前端学习——jsDay4

函数 函数使用 小练习 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widt…

Linux文件理解和系统调用

本文已收录至《Linux知识与编程》专栏&#xff01; 作者&#xff1a;ARMCSKGT 演示环境&#xff1a;CentOS 7 文件理解和系统调用 前言正文文件概念文件描述符文件描述符概念文件管理关于 files_struct文件描述符的分配一切皆文件思想 C语言文件操作文件的打开与关闭文件读写 文…

github中Mermaid的用法

这个东西是最近推出&#xff0c;首先是自己的repository中新建一个readme.md文件 需要一点前端的知识&#xff0c;就是先导入一个依赖文件&#xff0c;然后再写甘特图&#xff0c;如下&#xff1a; ### 甘特图 [<a href"https://mermaid-js.github.io/mermaid/#/gant…

RabbitMQ保证消息的可靠投递,Java实现RabbitMQ消息的可靠投递,Springboot实现RabbitMQ消息的可靠投递

文章目录 一、RabbitMQ消息可靠性概述1、引出问题2、RabbitMQ消息可靠性保证的四个环节 二、保证生产者消息发送到RabbitMQ服务器1、服务端确认&#xff1a;Transaction模式&#xff08;1&#xff09;JavaAPI&#xff08;2&#xff09;springbootAPI 2、服务端确认&#xff1a;…

峰会来袭 | CAD模型转换工具选择的难点和关键点解答

作为世界顶尖的3D软件开发SDK和CAD模型转换工具——HOOPS Exchange已问世十多年&#xff0c;深受开发者好评&#xff0c;并在工业测量、机械加工、造船设计等领域都有广泛的应用。 本次峰会将围绕CAD软件造型技术的多样性、CAD模型数据解析的难点、3D模型转换的经典问题等&…