网站首页 > 教程文章 正文
HTTP(超文本传输协议)是一种用于传输超媒体文档(如Web页面)的应用层协议。HTTP定义了客户端(通常是浏览器)与服务器之间进行通信的方式。下面是HTTP协议的主要组成部分:
一、HTTP请求的基本结构
http请求由四部分组成:请求行、请求头、空一行、请求体
1、 请求行
o方法(Method):指定请求类型,如GET、POST、PUT、DELETE等。
o请求URI(Request-URI):标识请求的资源位置,可以是绝对路径或相对路径。
oHTTP版本(HTTP Version):指定使用的HTTP协议版本,如HTTP/1.1或HTTP/2。
举例,POST
/api/1745339227916349440_list_1704956921063 HTTP/1.1,POST是请求方法,
api/1745339227916349440_list_1704956921063 是URL,HTTP/1.1表示使用的HTTP版本为1.1。
1.1. 请求方法分类
GET:请求指定的资源。
POST:向指定的资源提交数据进行处理请求(例如提交表单或上传文件)。
PUT:替换指定资源的内容。
DELETE:删除指定的资源。
OPTIONS:请求服务器支持的通信选项。
HEAD:请求指定资源的头部信息。
PATCH:对资源的部分更新。
CONNECT:用于建立代理服务器到另一台服务器的隧道连接。
1.1.1 get和post请求方法区别
get:
请求参数位置不同:传输数据暴露在url,使用GET方法请求时,请求参数和对应的值是跟在URL后面,通过问号(“?”)和and连接符(“&”)以及“=”号连接。
参数大小限制:传输数据量小,一般不超过2048个字符
安全性:GET 请求通常被认为是安全级别的较低,因为请求参数直接暴露在URL中。o适用性:适合用于获取数据,而不适合用于修改数据
缓存机制:GET 请求可以被浏览器缓存,以减少重复请求。示例:静态资源(如图片、CSS、JavaScript文件)通常使用 GET 请求。
post:
请求参数位置不同:参数携带在请求体中,所以需要在代码中对参数进行封装,封装完毕传入接口
参数大小限制:传输数据量大,理论上没有限制
安全性:POST 请求通常被认为是安全级别的较高,因为请求参数不暴露在URL中。o适用性:适合用于修改数据,如创建、更新或删除资源。
缓存机制:POST 请求通常不被缓存,因为每次请求可能会产生不同的结果。o示例:动态内容生成,如用户提交的数据。
1.1.2 OPTIONS请求方法
OPTIONS 请求主要用于获取目标资源支持的HTTP方法及其他相关信息,特别是在跨域请求中用于预检。通过发送 OPTIONS 请求,客户端可以了解服务器端的支持情况,从而正确配置请求。这对于开发和调试Web应用或API非常有用
以下是跨域请求预检示例:
2 、请求头
请求头部由键/值对组成,每行一对,键和值用冒号“:”(英文)分隔。
o通用头字段(General Header Fields):如Date、Cache-Control等。
o请求头字段(Request Header Fields):如Accept、Content-Type等。
o实体头字段(Entity Header Fields):如Content-Length、Content-Type等。
2.1 常用Content-Type分类、作用
Content-Type 是一个重要的HTTP头字段,用于指示请求或响应的消息主体(body)的内容类型。它告诉接收方消息主体的数据格式是什么样的,以便接收方能够正确解析和处理这些数据。常见的 Content-Type 包括 text/plain、application/json、application/xml、
application/x-www-form-urlencoded、multipart/form-data、text/html、image/jpeg、image/png、application/octet-stream 和 application/pdf。正确设置 Content-Type 可以确保数据被正确解析和处理。
注意:选择正确的 Content-Type在实际应用中,选择正确的 Content-Type 非常重要,因为这直接影响到数据的解析和处理。例如,如果发送JSON数据,但 Content-Type 设置为 text/plain,那么接收方可能会尝试将其作为纯文本处理,而不是作为JSON数据进行解析,从而导致错误。
2.1.1. text/plain
o用途:纯文本数据。
o示例:用于传输简单的文本信息,如纯文本文件。
o格式:纯文本格式,不包含任何HTML标记。
2.1.2. application/json
o用途:JSON(JavaScript Object Notation)格式的数据。
o示例:用于传输JSON格式的数据,常用于Web API。
o格式:JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
2.1.3. application/xml
o用途:XML(eXtensible Markup Language)格式的数据。
o示例:用于传输XML格式的数据,常用于Web服务。
o格式:XML是一种标记语言,用于存储和传输数据。
2.1.4. application/x-www-form-urlencoded
o用途:编码后的表单数据。
o示例:用于传输通过HTML
元素提交的数据。
o格式:键值对的形式,如 key1=value1&key2=value2。
2.1.5. multipart/form-data
o用途:用于传输包含文件上传的表单数据。
o示例:用于传输通过HTML 元素提交的文件和其他表单数据。
o格式:数据以多个部分(part)的形式发送,每个部分可以包含文件数据或其他表单数据。
2.1.6. text/html
o用途:HTML(HyperText Markup Language)格式的数据。
o示例:用于传输HTML页面。
o格式:HTML是一种标记语言,用于创建网页。
2.1.7. image/jpeg
o用途:JPEG图像格式的数据。
o示例:用于传输JPEG格式的图像文件。
o格式:JPEG是一种常用的图像文件格式,支持有损压缩。
2.1.8. image/png
o用途:PNG图像格式的数据。
o示例:用于传输PNG格式的图像文件。
o格式:PNG是一种无损压缩的图像文件格式,支持透明度。
2.1.9. application/octet-stream
o用途:二进制数据,通常用于传输未知类型的文件。
o示例:用于传输二进制文件,如下载文件。
o格式:字节流形式的数据。
2.1.10. application/pdf
o用途:PDF(Portable Document Format)格式的数据。
o示例:用于传输PDF格式的文件。
o格式:PDF是一种文件格式,用于呈现和交换文档。
3 、空行
用户进行内容分割,表示请求头到此为止,下一行的内容不再是请求头。
4、 请求体
如果请求方法允许(如POST、PUT),则可以包含请求正文。请求正文通常包含发送给服务器的数据
二、HTTP响应的基本结构
http响应由四部分组成:状态行、响应头、空一行、响应体
1、 状态行
oHTTP版本(HTTP Version):指定使用的HTTP协议版本,如HTTP/1.1或HTTP/2。
o状态码(Status Code):表示请求结果的状态码,如200(成功)、404(未找到)等。
o状态消息(Reason Phrase):描述状态码的简短消息。
举例: HTTP/1.1 200 OK
1.1 状态码分类
1xx:信息响应类,指示请求已接收,继续处理。
2xx:成功响应类,表示请求已成功被服务器接收、理解,并接受。
3xx:重定向响应类,表示需要客户端采取进一步的操作才能完成请求。
4xx:客户端错误类,表示请求中有语法错误或请求无法实现。
5xx:服务器错误类,表示服务器在处理请求的过程中发生了错误。
2、 响应头
和请求报文的请求头类似,响应头也由键值对组成,每行一对,键和值用英文冒号 : 分隔。
3、 空行
作为内容分割,表示以下不再是响应头的内容。
4、 响应体
如果响应包含实体内容,则可以包含响应正文。响应正文通常包含返回给客户端的数据。
猜你喜欢
- 2025-05-22 Spring Boot跨域问题终极解决方案:3种方法根治CORS报错
- 2025-05-22 详细介绍一下Spring Cloud GateWay中Router的使用?
- 2025-05-22 SpringBoot应用中使用拦截器实现路由转发
- 2025-05-22 谷歌浏览器HTTP不跳转HTTPS设置方法
- 2025-05-22 Java对接DeepSeek API:从零开始打造智能应用
- 2025-05-22 Python小案例70- URL和HTTP协议介绍及语法
- 2025-05-22 HTTPS通信原理及与HTTP的区别
- 2025-05-22 Python中的HTTP访问利器
- 2025-05-22 Spring MVC 底层原理深度解析:从请求到响应的全链路拆解
- 2025-05-22 揭秘HTTP:从诞生到现代的演进之旅
- 05-25干货 | 一步步部署 Flask 应用
- 05-25别再去找Docker命令了,你要的常用的全都在这
- 05-25如果您删除Windows11上的“Program Files”文件夹会发生什么?
- 05-25家用nas最常用的docker容器及部署方法
- 05-25你好 dotnet run file, 再见 csproj
- 05-25China committed to continuing contributions to global health: delegation
- 05-25Chinese, German experts urge cooperation during Eurasia relations seminar
- 05-25Peace of paramount importance for region
- 最近发表
-
- 干货 | 一步步部署 Flask 应用
- 别再去找Docker命令了,你要的常用的全都在这
- 如果您删除Windows11上的“Program Files”文件夹会发生什么?
- 家用nas最常用的docker容器及部署方法
- 你好 dotnet run file, 再见 csproj
- China committed to continuing contributions to global health: delegation
- Chinese, German experts urge cooperation during Eurasia relations seminar
- Peace of paramount importance for region
- after和in用法解析
- China's top diplomat to chair third China-Pacific Island countries foreign ministers' meeting
- 标签列表
-
- location.href (44)
- document.ready (36)
- git checkout -b (34)
- 跃点数 (35)
- 阿里云镜像地址 (33)
- qt qmessagebox (36)
- mybatis plus page (35)
- vue @scroll (38)
- 堆栈区别 (33)
- 什么是容器 (33)
- sha1 md5 (33)
- navicat导出数据 (34)
- 阿里云acp考试 (33)
- 阿里云 nacos (34)
- redhat官网下载镜像 (36)
- srs服务器 (33)
- pico开发者 (33)
- https的端口号 (34)
- vscode更改主题 (35)
- 阿里云资源池 (34)
- os.path.join (33)
- redis aof rdb 区别 (33)
- 302跳转 (33)
- http method (35)
- js array splice (33)