当前位置: 首页 > article >正文

3、HTTP请求报文和响应报文是怎样的,有哪些常见的字段?【中高频】

HTTP请求报文主要是由 请求行、请求头部、空行和请求体 四部分组成(第一行必须是一个请求行(request line),用来说明请求类型、要访问的 资源 以及使用的HTTP版本。紧接着是一个首部(header)小节,用来说明服务器要使用的附加信息。在首部之后是一个空行,再此之后可以添加任意的其他数据[称之为主体(body)]。

HTTP请求头

  1. 请求行

  • 主要由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。

    (例如,GET /index.html HTTP/1.1

    • 请求方法字段 ,方法就是指定我们要取执行的操作,比如GET方法、PUT方法、POST、DELETE

    • URL字符字段,也就是资源的路径【注1】

    • HTTP协议版本字段,比如说 HTTP/1.1或HTTP/2.0

  1. 请求头部

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

  • 请求头部用于通知服务器 关于客户端请求的信息,典型的请求头有:

    • Host:表示 客户端发送请求时,用来指定 服务器的域名

    • Connection 字段:最常用于客户端要求服务器使用「HTTP 长连接」机制,以便其他请求复用

    • Accept 字段:声明自己 可以接受哪些数据格式

除此以外,还有很多其他的常用字段,其中与请求体相关的最常使用的请求头是Content-Type和Content-Length

  1. 空行

    • 最后一个请求头之后是一个空行,通知服务器以下不再有请求头

    • 对于一个完整的请求报文来说 空行是必须的,否则服务器会认为 本次请求的数据 没有完全发送过来,将一直处于等待状态

  2. 请求体

    • 请求体不在GET方法中使用,而是在POST方法中使用

GET方法请求实例:

GET /books/?name=Professional%20Ajax HTTP/1.1  //请求行
 
Host: www.wrox.com                             //请求头
 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
 
Gecko/20050225 Firefox/1.0.1
 
Connection: Keep-Alive
 
             //空行

post方式请求实例:

POST / HTTP/1.1             //请求行
 
Host: www.wrox.com          //请求头
 
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.6)
 
Gecko/20050225 Firefox/1.0.1
 
Content-Type: application/x-www-form-urlencoded  //指定POST数据的编码类型
 
Content-Length: 40
 
Connection: Keep-Alive
 
     (此处空一行)
 
name=Professional%20Ajax&publisher=Wiley  //请求数据,POST形式参数保存在这里,与请求数据相关的请求头是Content-Type和Content-Length。

HTTP响应报文用于传达 服务器 对 客户端 请求的 处理结果和数据,它主要由状态行、响应头部、空行和响应体 四部分组成(在响应中唯一真正的区别在于第一行中用状态 信息 代替了请求信息。状态行(status line)通过提供一个状态码来说明所请求的资源情况)

img

  1. 状态行

    • 由3部分组成,分别为:协议版本,状态码,状态码描述,之间由空格分隔

      • 状态码为3位数字,200〜299的状态码表示成功,300〜399的状态码指资源重定向,400〜499的状态码指客户端请求出错,500〜599的状态码指服务端出错( HTTP / 1.1向协议中引入了信息性状态码,范围为100〜199)

      • 常见的状态码:

        200 响应成功

        302 跳转,跳转地址通过响应头中的位置属性指定(JSP中Forward和Redirect之间的区别)

        400 客户端请求有语法错误,不能被服务器识别

        403 服务器接收到请求,但是拒绝提供服务(认证失败)

        404 请求资源不存在

        500 服务器内部错误

  2. 响应头部

    • 类似于请求头部,作用是把 服务器响应 的信息 告知 给客户端,主要包含的字段有:

      • Content-Length 字段:服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据长度

      • Content-Type 字段:用于服务器回应时,告诉客户端,本次数据是什么格式

      • Content-Encoding 字段:说明数据的压缩方法。表示服务器返回的数据使用了什么压缩格式

除此以外,还有很多其他的常用字段

  1. 空行

    • 最后一个响应头之后是一个空行,表示响应头的结束

  2. 响应体

    • 存放 服务器实际传输的数据, 可以是文本、HTML页面、图片、视频等,也可能为空

响应实例:

HTTP/1.1 200 OK //响应行
 
Date: Sat, 31 Dec 2005 23:59:59 GMT //响应头
 
Content-Type: text/html;charset=ISO-8859-1
 
Content-Length: 122
        //空行
 
<html>
 
<head>
 
<title>Wrox Homepage</title>
 
</head>
 
<body>
 
<!-- body goes here -->
 
</body>
 
</html>

【注1】

  • URL:不仅唯一标识了资源,还提供了资源的具体访问路径

  • URN: 统一资源标识符,用来唯一标识互联网上资源的一个字符串。它可以用来定位任何类型的资源,包括网页、图片、文件、视频、服务等

  • URI:它可以是URL,也可以是URN


http://www.kler.cn/a/564039.html

相关文章:

  • 第十三章:服务器模块的整合
  • CSS笔记一
  • CONTACT 在 Ubuntu 系统中的安装与使用
  • “AI安全与治理:构建可信赖的人工智能生态系统”论坛将亮相CES Asia 2025
  • ollama在linux上进行部署——离线安装说明
  • java23种设计模式-享元模式
  • C++的经典框架实例(一)
  • Vue 报错error:0308010C:digital envelope routines::unsupported 解决方案
  • MySQL--DCL全解全知
  • 【大模型系列篇】大模型微调工具 LLama-Factory、Unsloth、ms-SWIFT
  • GS Quant——一个用于量化金融的 Python 工具包
  • css+js提问
  • 网络信息安全专业信息技术基础实训室解决方案
  • android keystore源码分析
  • git stash 和 git stash pop 的用法
  • C# Unity 唐老狮 No.2 模拟面试题
  • Automa 浏览器自动化编排 实现自动化浏览器操作
  • HarmonyOS NEXT 原生应用/元服务调试概述
  • 【多线程-第三天-NSOperation的练习-tableView异步下载网络图片-下载操作缓存池 Objective-C语言】
  • 蓝桥杯备考:DFS问题之数独