HTTP / HTTPS 请求头详解从结构到实际应用一次讲清楚前后端联调时经常遇到接口报 401 未授权或 404 找不到资源。排查了半天发现是请求头里没带 Token或者 Content-Type 设错了。请求头是 HTTP 通信中最核心的组成部分之一但很多人对它的理解停留在“复制粘贴”阶段。本文从结构出发结合实际案例帮你彻底掌握 HTTP 请求头。本文仅作技术分享不包含任何付费或商业推广信息。部分工具的列举仅为说明技术方案不代表任何立场。一、请求头是什么HTTP 请求头是客户端在发送 HTTP 请求时附带的元数据metadata用于告诉服务器客户端的身份、期望的响应格式、支持的数据压缩方式、以及附加的认证信息等。一个典型的 HTTP 请求头结构GET /api/v1/video/123 HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Accept: application/json Authorization: Bearer eyJhbGciOiJIUzI1NiIs... Content-Type: application/json Content-Length: 0每一行都是一个键值对用冒号分隔。这些信息对服务器理解客户端需求至关重要。二、常见请求头分类与详解2.1 通用请求头General Headers这类头部不区分请求或响应而是描述消息本身。头部名称作用示例Cache-Control缓存策略Cache-Control: no-cacheConnection连接管理Connection: keep-alive 或 closeDate消息时间戳Date: Tue, 25 Jun 2024 03:00:00 GMTPragma兼容旧版缓存HTTP/1.0Pragma: no-cache2.2 请求头Request Headers这类头部专门用于请求描述客户端的特征和偏好。Host必需指定要访问的服务器域名和端口号。HTTP/1.1 协议要求必须包含此头部用于支持虚拟主机。Host: www.example.com:8080User-Agent标识客户端标识客户端类型浏览器、爬虫、API 客户端、移动应用等。服务器可根据 UA 返回不同版本的内容。User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36Accept期望的响应格式告诉服务器客户端可以接受的 MIME 类型多个类型用逗号分隔可用 q 参数指定优先级0-1。Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8Accept-Encoding支持的压缩算法告诉服务器客户端支持的编码压缩方式如 gzip、br可显著减少传输数据量。Accept-Encoding: gzip, deflate, brAccept-Language期望的语言告诉服务器客户端偏好的自然语言用于内容本地化。Accept-Language: zh-CN,zh;q0.9,en;q0.8Referer来源页面告诉服务器当前请求是从哪个页面跳转过来的常用于防盗链和统计分析。Referer: https://www.google.com/search?qvideocodecAuthorization认证凭证携带用户身份凭证如 JWT Token、Basic Auth、API Key。Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Cookie会话状态携带服务器之前通过 Set-Cookie 设置的会话标识。Cookie: sessionIdabc123; userId1001Content-Type请求体的格式当请求包含 Body如 POST/PUT 方法时此头部指定请求体的数据格式。Content-Type: application/json Content-Type: multipart/form-data; boundary----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Type: application/x-www-form-urlencodedContent-Length请求体大小请求体的字节长度用于服务器校验数据完整性。Content-Length: 348 Range范围请求 用于请求资源的部分内容常用于视频/音频的断点续传或拖动播放。 text Range: bytes0-10232.3 条件请求头Conditional Headers这类头部用于验证资源是否发生变化可节省带宽。头部名称作用示例If-Match仅当 ETag 匹配时才执行操作If-Match: “abc123”If-None-Match仅当 ETag 不匹配时才返回内容If-None-Match: “abc123”If-Modified-Since仅当资源在此时间后修改过才返回内容If-Modified-Since: Tue, 25 Jun 2024 03:00:00 GMTIf-Range范围请求的条件版本If-Range: “abc123”三、请求头在视频技术中的应用3.1 视频播放中的断点续传Range 请求浏览器在播放长视频时并不是一次性下载整个文件而是通过 Range 请求逐步下载片段。当用户拖动进度条时浏览器会发送新的 Range 请求获取目标时间段的字节数据。GET /video/sample.mp4 HTTP/1.1 Host: video.example.com Range: bytes1048576-2097151服务器返回 206 Partial Content 状态码以及对应的字节片段。3.2 防盗链与 Referer视频平台常常通过 Referer 头部实现防盗链只允许来自本站页面的视频请求外站直接访问视频链接会被拒绝。Referer: https://www.example.com/video/123如果 Referer 缺失或来自非白名单站点服务器返回 403 Forbidden。3.3 自适应码率切换HLS / DASH 等流媒体协议中客户端通过请求头中的 Accept-Encoding 和 Accept-Language 向服务器传递设备和网络信息服务器据此决定推送何种码率的视频片段。四、实战排查请求头导致接口报错的几个典型案例案例1401 Unauthorized未认证现象调用一个需要登录的接口返回 401。排查检查 Authorization 头部是否缺失或格式错误。常见错误写成 Authorization: Token xxx 但服务器要求 Authorization: Bearer xxxToken 过期或格式不正确正确示例Authorization: Bearer eyJhbGciOiJIUzI1NiIs...案例2415 Unsupported Media Type不支持的媒体类型现象POST 请求返回 415。排查检查 Content-Type 是否与请求体实际格式一致。错误场景请求体是 JSON 格式但 Content-Type 没设默认 text/plain或设成了 application/x-www-form-urlencoded服务器只接受 application/json但客户端发送了 text/xml正确示例POST /api/video/upload HTTP/1.1 Host: api.example.com Content-Type: application/json {title: 视频标题, url: https://...}案例3视频无法拖放播放现象视频可以播放但无法拖动进度条或拖动后回到原点。排查服务器是否支持 Range 请求。检查响应头是否有 Accept-Ranges: bytes。客户端是否发送了正确的 Range 头部。如果有检查服务端是否返回 206 Partial Content。正确示例服务端响应头HTTP/1.1 206 Partial Content Accept-Ranges: bytes Content-Length: 1048576 Content-Range: bytes 0-1048575/10485760五、命令行工具用 curl 查看和发送自定义请求头5.1 查看目标服务器的响应头用于排查curl-Ihttps://example.com/video/sample.mp45.2 发送带自定义请求头的请求# 带 Bearer Token JSON 请求体curl-XPOST https://api.example.com/video/upload\-HAuthorization: Bearer your_token\-HContent-Type: application/json\-d{title:我的视频,url:https://...}5.3 只查看请求头不下载内容curl--headhttps://example.com/video/sample.mp4六、附常用工具推荐日常调试请求头时以下几个方案比较实用浏览器开发者工具F12→Network最直接可查看请求头、响应头。Postman / Insomnia可视化 API 测试方便管理不同环境。VidDown 的 API 测试工具支持自定义请求头和方法适合快速验证。感兴趣- 的读者可自行了解通常搜索 API 测试工具能找到同类服务。在线 JSON 格式化工具用于解析 API 返回的 JSON 数据方便阅读。七、总结HTTP/HTTPS 请求头是 Web 通信的“说明书”——它告诉服务器客户端的身份、能力和需求也决定了服务器如何响应。理解每个头部字段的含义和用途可以快速定位各类接口错误优化视频传输体验并在日常开发中更加高效。希望这篇文章能帮你建立完整的请求头知识体系。如果下次联调时遇到 401 或 415 报错不妨先检查一下请求头是否配置正确。
HTTP / HTTPS 请求头详解:从结构到实际应用,一次讲清楚
发布时间:2026/6/26 18:04:30
HTTP / HTTPS 请求头详解从结构到实际应用一次讲清楚前后端联调时经常遇到接口报 401 未授权或 404 找不到资源。排查了半天发现是请求头里没带 Token或者 Content-Type 设错了。请求头是 HTTP 通信中最核心的组成部分之一但很多人对它的理解停留在“复制粘贴”阶段。本文从结构出发结合实际案例帮你彻底掌握 HTTP 请求头。本文仅作技术分享不包含任何付费或商业推广信息。部分工具的列举仅为说明技术方案不代表任何立场。一、请求头是什么HTTP 请求头是客户端在发送 HTTP 请求时附带的元数据metadata用于告诉服务器客户端的身份、期望的响应格式、支持的数据压缩方式、以及附加的认证信息等。一个典型的 HTTP 请求头结构GET /api/v1/video/123 HTTP/1.1 Host: example.com User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 Accept: application/json Authorization: Bearer eyJhbGciOiJIUzI1NiIs... Content-Type: application/json Content-Length: 0每一行都是一个键值对用冒号分隔。这些信息对服务器理解客户端需求至关重要。二、常见请求头分类与详解2.1 通用请求头General Headers这类头部不区分请求或响应而是描述消息本身。头部名称作用示例Cache-Control缓存策略Cache-Control: no-cacheConnection连接管理Connection: keep-alive 或 closeDate消息时间戳Date: Tue, 25 Jun 2024 03:00:00 GMTPragma兼容旧版缓存HTTP/1.0Pragma: no-cache2.2 请求头Request Headers这类头部专门用于请求描述客户端的特征和偏好。Host必需指定要访问的服务器域名和端口号。HTTP/1.1 协议要求必须包含此头部用于支持虚拟主机。Host: www.example.com:8080User-Agent标识客户端标识客户端类型浏览器、爬虫、API 客户端、移动应用等。服务器可根据 UA 返回不同版本的内容。User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36Accept期望的响应格式告诉服务器客户端可以接受的 MIME 类型多个类型用逗号分隔可用 q 参数指定优先级0-1。Accept: text/html,application/xhtmlxml,application/xml;q0.9,image/webp,*/*;q0.8Accept-Encoding支持的压缩算法告诉服务器客户端支持的编码压缩方式如 gzip、br可显著减少传输数据量。Accept-Encoding: gzip, deflate, brAccept-Language期望的语言告诉服务器客户端偏好的自然语言用于内容本地化。Accept-Language: zh-CN,zh;q0.9,en;q0.8Referer来源页面告诉服务器当前请求是从哪个页面跳转过来的常用于防盗链和统计分析。Referer: https://www.google.com/search?qvideocodecAuthorization认证凭证携带用户身份凭证如 JWT Token、Basic Auth、API Key。Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...Cookie会话状态携带服务器之前通过 Set-Cookie 设置的会话标识。Cookie: sessionIdabc123; userId1001Content-Type请求体的格式当请求包含 Body如 POST/PUT 方法时此头部指定请求体的数据格式。Content-Type: application/json Content-Type: multipart/form-data; boundary----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Type: application/x-www-form-urlencodedContent-Length请求体大小请求体的字节长度用于服务器校验数据完整性。Content-Length: 348 Range范围请求 用于请求资源的部分内容常用于视频/音频的断点续传或拖动播放。 text Range: bytes0-10232.3 条件请求头Conditional Headers这类头部用于验证资源是否发生变化可节省带宽。头部名称作用示例If-Match仅当 ETag 匹配时才执行操作If-Match: “abc123”If-None-Match仅当 ETag 不匹配时才返回内容If-None-Match: “abc123”If-Modified-Since仅当资源在此时间后修改过才返回内容If-Modified-Since: Tue, 25 Jun 2024 03:00:00 GMTIf-Range范围请求的条件版本If-Range: “abc123”三、请求头在视频技术中的应用3.1 视频播放中的断点续传Range 请求浏览器在播放长视频时并不是一次性下载整个文件而是通过 Range 请求逐步下载片段。当用户拖动进度条时浏览器会发送新的 Range 请求获取目标时间段的字节数据。GET /video/sample.mp4 HTTP/1.1 Host: video.example.com Range: bytes1048576-2097151服务器返回 206 Partial Content 状态码以及对应的字节片段。3.2 防盗链与 Referer视频平台常常通过 Referer 头部实现防盗链只允许来自本站页面的视频请求外站直接访问视频链接会被拒绝。Referer: https://www.example.com/video/123如果 Referer 缺失或来自非白名单站点服务器返回 403 Forbidden。3.3 自适应码率切换HLS / DASH 等流媒体协议中客户端通过请求头中的 Accept-Encoding 和 Accept-Language 向服务器传递设备和网络信息服务器据此决定推送何种码率的视频片段。四、实战排查请求头导致接口报错的几个典型案例案例1401 Unauthorized未认证现象调用一个需要登录的接口返回 401。排查检查 Authorization 头部是否缺失或格式错误。常见错误写成 Authorization: Token xxx 但服务器要求 Authorization: Bearer xxxToken 过期或格式不正确正确示例Authorization: Bearer eyJhbGciOiJIUzI1NiIs...案例2415 Unsupported Media Type不支持的媒体类型现象POST 请求返回 415。排查检查 Content-Type 是否与请求体实际格式一致。错误场景请求体是 JSON 格式但 Content-Type 没设默认 text/plain或设成了 application/x-www-form-urlencoded服务器只接受 application/json但客户端发送了 text/xml正确示例POST /api/video/upload HTTP/1.1 Host: api.example.com Content-Type: application/json {title: 视频标题, url: https://...}案例3视频无法拖放播放现象视频可以播放但无法拖动进度条或拖动后回到原点。排查服务器是否支持 Range 请求。检查响应头是否有 Accept-Ranges: bytes。客户端是否发送了正确的 Range 头部。如果有检查服务端是否返回 206 Partial Content。正确示例服务端响应头HTTP/1.1 206 Partial Content Accept-Ranges: bytes Content-Length: 1048576 Content-Range: bytes 0-1048575/10485760五、命令行工具用 curl 查看和发送自定义请求头5.1 查看目标服务器的响应头用于排查curl-Ihttps://example.com/video/sample.mp45.2 发送带自定义请求头的请求# 带 Bearer Token JSON 请求体curl-XPOST https://api.example.com/video/upload\-HAuthorization: Bearer your_token\-HContent-Type: application/json\-d{title:我的视频,url:https://...}5.3 只查看请求头不下载内容curl--headhttps://example.com/video/sample.mp4六、附常用工具推荐日常调试请求头时以下几个方案比较实用浏览器开发者工具F12→Network最直接可查看请求头、响应头。Postman / Insomnia可视化 API 测试方便管理不同环境。VidDown 的 API 测试工具支持自定义请求头和方法适合快速验证。感兴趣- 的读者可自行了解通常搜索 API 测试工具能找到同类服务。在线 JSON 格式化工具用于解析 API 返回的 JSON 数据方便阅读。七、总结HTTP/HTTPS 请求头是 Web 通信的“说明书”——它告诉服务器客户端的身份、能力和需求也决定了服务器如何响应。理解每个头部字段的含义和用途可以快速定位各类接口错误优化视频传输体验并在日常开发中更加高效。希望这篇文章能帮你建立完整的请求头知识体系。如果下次联调时遇到 401 或 415 报错不妨先检查一下请求头是否配置正确。