Author : Cyan_RA9
Source : 【卡码笔记】网站
Question : HTTP请求报文和响应报文是怎样的?
【简要回答】
HTTP请求报文
- 概念:客户端以请求报文的形式向服务器发送请求,用于获取资源或提交数据。
- 报文结构:
- 请求行(Request Line):包含方法、请求目标 和 HTTP版本。
- 请求头(header line):包含客户端信息和请求参数。
- 空行(Empty Line):其作用是分隔请求头和请求体。
- 请求体(entity body):可选,通常用于POST请求。
- 首部行(请求头)常用字段:
- Host:目标服务器的主机名。
- User-Agent:客户端信息。
- Accept:客户端接受的媒体类型。
HTTP响应报文
- 概念:服务器对客户端请求的响应,用于返回请求结果。
- 报文结构:
- 状态行:包含HTTP版本、状态码 和 状态短语。
- 响应头:包含服务器信息和响应参数。
- 空行(Empty Line):其作用是分隔响应头和响应体。
- 响应体:可选,包含服务器返回的数据。
- 首部行(响应头)常用字段:
- Content-Type:响应体的媒体类型。
- Content-Length:响应体的长度。
- Set-Cookie:服务器设置的Cookie。
【详细回答】
HTTP请求报文
- 概念:HTTP请求报文是客户端向服务器发送的请求,用于获取资源或提交数据。根据请求方法的不同,请求报文的结构和内容会有所变化。
- 报文结构:
- 请求行(Request Line):
① 格式:<方法> <请求目标> <HTTP版本>
② 示例:GET /index.html HTTP/1.1
③ 作用:<方法>用于表示请求的类型(如GET, POST等);<请求目标>通常是请求资源的URL路径;<HTTP版本>如HTTP/1.1,不同版本的HTTP协议具有不同的特性。 - 请求头(Request Headers):请求头可包含多个字段,字段格式为:
<字段名>: <字段值>(eg: Accept: text/html);请求头的作用是提供客户端信息和请求参数。 - 空行(Empty Line):其作用是分隔请求头和请求体。
- 请求体(Request Body):可选,通常用于 POST、PUT等请求类型。请求体包含了提交的数据(如提交的表单数据)。
- 请求行(Request Line):
- 首部行(请求头)常用字段:
- Host:目标服务器的主机名。
- User-Agent:客户端信息(如浏览器类型)。
- Accept:客户端接受的媒体类型(如 text/html)。
- Content-Type:请求体的媒体类型(如 application/json)。
- Content-Length:请求体的长度。
- GET请求与POST请求的区别:
- GET请求:请求体为空,数据直接通过URL传递。GET请求的特点有:①数据长度有限(受URL长度限制);②数据可见(包含在URL中),不安全;③适用于获取资源。
- POST请求:请求体包含数据,数据通过请求体(载荷)传递。POST请求的特点有:①数据长度理论上无限制;②数据不可见(封装在请求体中),相比GET请求更安全;③适用于提交数据(例如提交表单数据)。
HTTP响应报文
- 概念:HTTP响应报文是服务器对客户端请求的响应,用于返回请求结果。根据请求资源的不同情况,HTTP响应包含的状态码也会有所变化。
- 报文结构:
- 状态行(Status Line):
① 格式:<HTTP版本> <状态码> <状态短语>
② 示例:HTTP/1.1 200 OK
③ 作用:<HTTP版本>如HTTP/2,不同版本的HTTP协议具有不同的特性;<状态码>表示请求的结果(如 200、404 等);<状态短语>则是对状态码的简要描述(如 OK、Not Found 等)。 - 响应头(Response Headers):响应头可包含多个字段,字段格式为:
<字段名>: <字段值>(eg: Content-Type: text/html);请求头的作用是提供客户端信息和请求参数;响应头的作用是提供服务器信息和响应参数。 - 空行(Empty Line):其作用是分隔响应头和响应体。
- 响应体(Response Body):可选,包含服务器返回的数据,也可能没有返回,比如 304。
- 状态行(Status Line):
- 首部行(响应头)常用字段:
- Content-Type:响应体的媒体类型(如 text/html)。
- Content-Length:响应体的长度(如 1024字节)。
- Set-Cookie:服务器设置的Cookie。
- Cache-Control:缓存控制指令。
- 常见状态码
- 200 OK:请求成功。
- 404 Not Found:请求的资源未找到。
- 500 Internal Server Error:服务器内部错误。
【知识拓展】
- HTTP请求报文和HTTP响应报文的结构,如下图所示:
- MIME类型:
-
MIME是 HTTP 协议中数据类型。 MIME 的英文全称是"Multipurpose Internet Mail Extensions",指多功能 Internet邮件扩充服务。
-
MIME 类型的格式是 " 大类型 / 小类型 ",并与某一种文件的扩展名相对应。
-
在响应包的 Content-Type响应头中 就有指定MIME类型。
-
常见MIME类型,如下表所示:
文件 MIME 类型 超文本标记语言文本 .html, .htm eg: text/html 普通文本 .txt eg: text/plain RTF 文本 .rtf eg: application/rtf GIF 图像 .gif eg: image/gif JPEG 图像 .jpeg, .jpg eg: image/jpeg au 声音文件 .au eg: audio/basic MIDI 音乐文件 .mid, .midi eg: audio/midi, audio/x-midi ReadAudio 音乐文件 .ra, .ram eg: audio/x-pn-realaudio MPEG 文件 .mpeg, .mpg eg: video/mpeg AVI 文件 .avi eg: video/x-msvideo GZIP 文件 .gz eg: application/x-gzip TAR 文件 .tar eg: application/x-tar
-