手机版

http是一种什么式协议(详解HTTP协议基本结构)

时间:2024-11-14 10:15:07

HTTP(超文本传输协议)是一种用于传输超媒体文档(如Web页面)的应用层协议。HTTP定义了客户端(通常是浏览器)与服务器之间进行通信的方式。下面是HTTP协议的主要组成部分:

一、HTTP请求的基本结构

http请求由四部分组成:请求行、请求头、空一行、请求体

http请求的基本结构图


1、 请求行

•方法(Method):指定请求类型,如GET、POST、PUT、DELETE等。

•请求URI(Request-URI):标识请求的资源位置,可以是绝对路径或相对路径。

•HTTP版本(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中。•适用性:适合用于获取数据,而不适合用于修改数据

缓存机制:GET 请求可以被浏览器缓存,以减少重复请求。示例:静态资源(如图片、CSS、JavaScript文件)通常使用 GET 请求。

post:

请求参数位置不同:参数携带在请求体中,所以需要在代码中对参数进行封装,封装完毕传入接口

参数大小限制:传输数据量大,理论上没有限制

安全性:POST 请求通常被认为是安全级别的较高,因为请求参数不暴露在URL中。•适用性:适合用于修改数据,如创建、更新或删除资源。

缓存机制:POST 请求通常不被缓存,因为每次请求可能会产生不同的结果。•示例:动态内容生成,如用户提交的数据。

1.1.2 OPTIONS请求方法

OPTIONS 请求主要用于获取目标资源支持的HTTP方法及其他相关信息,特别是在跨域请求中用于预检。通过发送 OPTIONS 请求,客户端可以了解服务器端的支持情况,从而正确配置请求。这对于开发和调试Web应用或API非常有用

以下是跨域请求预检示例:


跨域请求预检示例图


2 、请求头

请求头部由键/值对组成,每行一对,键和值用冒号“:”(英文)分隔。

•通用头字段(General Header Fields):如Date、Cache-Control等。

•请求头字段(Request Header Fields):如Accept、Content-Type等。

•实体头字段(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

•用途:纯文本数据。

•示例:用于传输简单的文本信息,如纯文本文件。

•格式:纯文本格式,不包含任何HTML标记。

2.1.2. application/json

•用途:JSON(JavaScript Object Notation)格式的数据。

•示例:用于传输JSON格式的数据,常用于Web API。

•格式:JSON是一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。

2.1.3. application/xml

•用途:XML(eXtensible Markup Language)格式的数据。

•示例:用于传输XML格式的数据,常用于Web服务。

•格式:XML是一种标记语言,用于存储和传输数据。

2.1.4. application/x-www-form-urlencoded

•用途:编码后的表单数据。

•示例:用于传输通过HTML

元素提交的数据。

•格式:键值对的形式,如 key1=value1&key2=value2。

2.1.5. multipart/form-data

•用途:用于传输包含文件上传的表单数据。

•示例:用于传输通过HTML 元素提交的文件和其他表单数据。

•格式:数据以多个部分(part)的形式发送,每个部分可以包含文件数据或其他表单数据。

2.1.6. text/html

•用途:HTML(HyperText Markup Language)格式的数据。

•示例:用于传输HTML页面。

格式:HTML是一种标记语言,用于创建网页。

2.1.7. image/jpeg

•用途:JPEG图像格式的数据。

•示例:用于传输JPEG格式的图像文件。

•格式:JPEG是一种常用的图像文件格式,支持有损压缩。

2.1.8. image/png

•用途:PNG图像格式的数据。

•示例:用于传输PNG格式的图像文件。

•格式:PNG是一种无损压缩的图像文件格式,支持透明度。

2.1.9. application/octet-stream

用途:二进制数据,通常用于传输未知类型的文件。

•示例:用于传输二进制文件,如下载文件。

•格式:字节流形式的数据。

2.1.10. application/pdf

•用途:PDF(Portable Document Format)格式的数据。

•示例:用于传输PDF格式的文件。

•格式:PDF是一种文件格式,用于呈现和交换文档。

3 、空行

用户进行内容分割,表示请求头到此为止,下一行的内容不再是请求头。

4、 请求体

如果请求方法允许(如POST、PUT),则可以包含请求正文。请求正文通常包含发送给服务器的数据

二、HTTP响应的基本结构

http响应由四部分组成:状态行、响应头、空一行、响应体


http响应的基本结构示例

1、 状态行

•HTTP版本(HTTP Version):指定使用的HTTP协议版本,如HTTP/1.1或HTTP/2。

•状态码(Status Code):表示请求结果的状态码,如200(成功)、404(未找到)等。

•状态消息(Reason Phrase):描述状态码的简短消息。

举例: HTTP/1.1 200 OK

1.1 状态码分类

1xx:信息响应类,指示请求已接收,继续处理。

2xx:成功响应类,表示请求已成功被服务器接收、理解,并接受。

3xx:重定向响应类,表示需要客户端采取进一步的操作才能完成请求。

4xx:客户端错误类,表示请求中有语法错误或请求无法实现。

5xx:服务器错误类,表示服务器在处理请求的过程中发生了错误。

2、 响应头

和请求报文的请求头类似,响应头也由键值对组成,每行一对,键和值用英文冒号 : 分隔。

3、 空行

作为内容分割,表示以下不再是响应头的内容。

4、 响应体

如果响应包含实体内容,则可以包含响应正文。响应正文通常包含返回给客户端的数据。