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

HTTP 请求头、响应头常见字段分析

目录

  • 请求头
      • Accept
      • Accept-Encoding
      • User-Agent
      • Connection
      • Cache-Control
      • Host
  • 响应头
      • Content-Encoding
      • ETag
      • Content-Type
      • Vary
      • x-business-use-case-usage
      • Access-Control-Allow-Origin
      • facebook-api-version
      • Strict-Transport-Security
      • Pragma
      • Cache-Control
      • Expires
      • x-fb-request-id 和 x-fb-trace-id
      • x-fb-rev
      • X-FB-Debug
      • Date
      • X-FB-Connection-Quality
      • Alt-Svc
      • Connection
      • Content-Length
      • x-fb-server-load
      • 用途
      • 示例

请求头

Accept

  • 含义:用于告知服务器客户端能够接收的响应内容类型。
  • */*,表示客户端可以接受任何类型的内容。星号(*)是一个通配符,代表所有可能的媒体类型,这使得服务器可以返回任何它认为合适的响应格式。

Accept-Encoding

  • 含义:告诉服务器客户端支持的压缩编码方式。
  • gzip, deflate, br,表示客户端支持gzip、deflate和brotli这三种压缩算法。服务器可以根据这个字段选择合适的压缩方式来压缩响应内容,从而减少传输数据量,提高传输效率。

User-Agent

  • 含义:标识发起请求的客户端软件的信息,包括软件名称、版本号等。
  • PostmanRuntime-ApipostRuntime/1.1.0,这里表明请求是由Postman或Apipost(可能是某个具体的API测试工具)发起的,版本号为1.1.0。服务器可以通过这个字段了解请求的来源,有时会根据不同的客户端进行一些特定的处理。

Connection

  • 含义:控制HTTP连接的状态。
  • keep-alive,表示客户端希望与服务器保持持久连接。在持久连接模式下,一个TCP连接可以被多个HTTP请求复用,这样可以减少建立和关闭连接的开销,提高通信效率。
  • https://www.cnblogs.com/caoweixiong/p/14720254.html

Cache-Control

  • 含义:用于指定请求和响应的缓存机制。
  • no-cache,表示客户端要求服务器重新验证资源的有效性,不使用缓存中的旧数据。即使缓存中存在该资源,服务器也需要检查资源是否被修改过,若未修改则返回304状态码,否则返回新的资源内容。

Host

  • 含义:指定请求的主机名和端口号。
  • graph.facebook.com,表示请求的目标主机是graph.facebook.com。这个字段在虚拟主机环境下尤为重要,因为一个服务器可能托管多个网站,通过Host字段,服务器可以将请求正确地转发到对应的网站处理程序。

响应头

这些是HTTP响应头字段,服务器通过它们向客户端传递关于响应的额外信息,具体解释如下:

Content-Encoding

  • 含义:表示服务器对响应内容进行的编码方式。
  • br,即Brotli编码,这是一种高效的压缩算法,可以有效减少响应内容的大小,加快传输速度。

ETag

  • 含义:实体标签,用于标识资源的唯一版本。
  • "d591be95c5fdfd6b20da5d41e965f6f457286f81",客户端可以在后续请求中通过If-None-Match头带上这个ETag值,服务器会根据ETag判断资源是否被修改,若未修改则返回304状态码,否则返回新的资源和ETag。

Content-Type

  • 含义:告知客户端响应内容的媒体类型。
  • application/json; charset=UTF-8,表示响应内容是JSON格式的数据,字符编码为UTF-8。

Vary

  • 含义:告诉缓存服务器在缓存响应时需要考虑哪些请求头字段。
  • Origin,Accept-Encoding,表示缓存服务器在决定是否使用缓存响应时,需要考虑请求中的Origin(来源)和Accept-Encoding(接受的编码方式)字段。

x-business-use-case-usage

  • 含义:这是一个自定义的响应头,通常用于提供业务相关的使用情况信息。
  • {"534156220991515":[{"type":"ads_management","call_count":1,"total_cputime":1,"total_time":1,"estimated_time_to_regain_access":0,"ads_api_access_tier":"standard_access"}]},这里是一个JSON对象,记录了某个业务用例(如广告管理)的调用次数、总CPU时间、总时间等信息,以及预计恢复访问的时间和API访问级别。

Access-Control-Allow-Origin

  • 含义:用于跨源资源共享(CORS)策略,指定哪些外部域可以访问资源。
  • *,表示允许所有域访问该资源,这在开发和测试阶段很常见,但在生产环境中通常会限制为特定的域以增强安全性。

facebook-api-version

  • 含义:标识所使用的Facebook API版本。
  • v21.0,表示响应是基于Facebook API的21.0版本生成的。

Strict-Transport-Security

  • 含义:强制客户端使用HTTPS连接,增强安全性。
  • max-age=15552000; preload,表示在接下来的15552000秒(约180天)内,客户端必须使用HTTPS连接,且该指令可以被预加载到浏览器的HSTS列表中。

Pragma

  • 含义:用于向后兼容HTTP/1.0,与Cache-Control协同工作。
  • no-cache,与Cache-Control中的相关指令一起,强调不使用缓存。

Cache-Control

  • 含义:控制响应的缓存行为。
  • private, no-cache, no-store, must-revalidate,表示响应是私有的,不应被缓存,即使缓存了也必须重新验证,且不应存储在任何缓存系统中。

Expires

  • 含义:指定响应的过期时间。
  • Sat, 01 Jan 2000 00:00:00 GMT,这是一个过去的时间点,意味着响应立即过期,客户端不应使用缓存。

x-fb-request-id 和 x-fb-trace-id

  • 含义:这两个字段通常用于服务器端的请求追踪和调试。
  • AR3OqzT-BrK-9iiX81ilZ3UCXMzkisGev1,是唯一的请求标识符,便于在服务器日志中查找和分析特定请求。

x-fb-rev

  • 含义:标识服务器端的代码版本或修订号。
  • 1019404516,有助于确定处理请求的服务器端代码的具体版本。

X-FB-Debug

  • 含义:提供调试信息,通常用于开发和测试阶段。
  • Xft6QiWZ4TyFO23yH5kEXcpGCVNn41XwE8qGKyLxyJTq1D0UPSdwbxTr6eDfIGU3kKYXkYZUIr3QEoSAGTZ6Yg==,是一个加密的调试信息字符串,可能包含错误信息、内部状态等。

Date

  • 含义:表示响应生成的时间。
  • Fri, 17 Jan 2025 09:54:33 GMT,即2025年1月17日9点54分33秒。

X-FB-Connection-Quality

  • 含义:提供客户端连接质量的信息。
  • EXCELLENT; q=0.9, rtt=18, rtx=0, c=10, mss=1368, tbw=3402, tp=-1, tpl=-1, uplat=631, ullat=0,包含连接质量评级、往返时间(rtt)、重传次数(rtx)等详细信息,有助于服务器根据连接质量优化响应。

Alt-Svc

  • 含义:指定可替代的服务,如HTTP/3。
  • h3=":443"; ma=86400,表示服务器支持HTTP/3协议,并在443端口上可用,最大年龄(ma)为86400秒。

Connection

  • 含义:控制连接的状态。
  • keep-alive,表示服务器希望保持与客户端的持久连接。

Content-Length

  • 含义:表示响应内容的长度。
  • 1011,即响应内容的大小为1011字节。

x-fb-server-load

  • 含义:表示服务器当前的负载情况。
  • 19,这个数值通常是一个相对的负载指标,用于反映服务器在处理请求时的繁忙程度。具体数值的含义可能因服务器的配置和监控系统而异,但一般来说:
    • 较低的数值(如1-10)可能表示服务器负载较轻,能够快速响应请求。
    • 中等的数值(如11-50)可能表示服务器负载适中,响应速度可能稍有延迟。
    • 较高的数值(如51以上)可能表示服务器负载较重,响应速度可能会明显变慢,甚至可能出现超时或错误。

用途

  • 监控和优化:运维人员可以使用这个字段来监控服务器的负载情况,及时发现和处理高负载问题,优化服务器性能。
  • 客户端决策:客户端可以根据这个字段的值决定是否重试请求、切换到其他服务器或调整请求频率,以提高用户体验和系统稳定性。

示例

假设你正在开发一个客户端应用,频繁调用Facebook的API。通过检查x-fb-server-load字段,你可以实现以下逻辑:

  • 如果负载较低(如1-10),正常发送请求。
  • 如果负载中等(如11-50),适当降低请求频率。
  • 如果负载较高(如51以上),暂停请求,稍后再试,或者切换到其他可用的服务器。

一、401:

  1. HTTP 401 错误 - 未授权: (Unauthorized)

您的Web服务器认为,客户端发送的 HTTP 数据流是正确的,但进入网址 (URL) 资源 , 需要用户身份验证 , 而相关信息 1 )尚未被提供, 或 2 )已提供但没有通过授权测试。这就是通常所知的“ HTTP 基本验证 ”。 需客户端提供的验证请求在 HTTP 协议中被定义为 WWW – 验证标头字段 (WWW-Authenticate header field)

桌面应用程序一般不会使用cookie, 而是把 "用户名+冒号+密码"用BASE64编码的字符串放在http request 中的header Authorization中发送给服务端, 这种方式叫HTTP基本认证(Basic Authentication)。

  1. 原因:

因为request中没有包含Authorization header,服务器会返回一个401 Unauthozied给客户端,并且在Response的header“www-authentivate”中添加信息。当客户端把用户名密码用Base64加密后编码,放在Authorization header中发送给服务器,那么就会认证成功了。

  1. 场景及办法:

最近用postman偶然遇见了401的报错,是请求用户的token这个接口的时候,所有的Body请求参数和Headers都一样,但是就是报错401。喊了后端过来看了好久哈哈哈,忘了加Authorization这个请求Header了。解决办法就是,在Headers中添加基本认证的键值对。这个键值对如下:

Authorization:Basic YKKOw9MPlY3JldA==(注意:这里的Base64位编码我随便写的,可以随意看看)

http://blog.csdn.net/u013136708/article/details/41210897

二、403:

  1. HTTP 403 Forbidden - 拒绝访问

403 Forbidden 是HTTP协议中的一个状态码(Status Code)。可以简单的理解为没有权限访问此站。

该状态表示 服务器理解了本次请求但是拒绝执行该任务,该请求不该重发给服务器。在HTTP请求的方法不是“HEAD”,并且服务器想让客户端知道为什么没有权限的情况下,服务器应该在返回的信息中描述拒绝的理由。在服务器不想提供任何反馈信息的情况下,服务器可以用404 Not Found代替403 Forbidden。

  1. 原因:
    You don’t have permission to access / on this server. Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.

  2. 场景及办法:
    前几天偶然看到了这个报错403,是当时我们链接地址是https://www.ceshi.com; 但是却被谁谁谁配置成了http://www.ceshi.com;最后就会导致403的报错。解决办法:就是将http改成https。
    细看了下:这个错误应该是403.4。403.4错误是由于要求SSL而造成的,您必须在要查看的网页的地址中使用"https"。

相关文章:

HTTP 请求头、响应头常见字段分析

目录 请求头AcceptAccept-EncodingUser-AgentConnectionCache-ControlHost 响应头Content-EncodingETagContent-TypeVaryx-business-use-case-usageAccess-Control-Allow-Originfacebook-api-versionStrict-Transport-SecurityPragmaCache-ControlExpiresx-fb-request-id 和 x-…...

postman登录cookie设置

1.设置环境变量, 定义变量存放共享的登录信息 如Cookie 2.登录接口编码test脚本获取cookie信息 let jsessionidCookie pm.cookies.get("JSESSIONID");if (jsessionidCookie) {let cookie "JSESSIONID" jsessionidCookie "; Admin-Tok…...

Oracle临时表空间(基础操作)

临时表空间 临时表空间:用来存放用户的临时数据,临时数据在需要时被覆盖,关闭数据库后自动删除,其中不能存放永久性数据。 用户进程和服务器进程是一对一的叫做专用连接。 任何一个用户连到oracle数据库,oracle都会…...

数据结构-基础

1、概念: 程序 数据结构 算法 2、程序的好坏 可读性,稳定性,扩展性,时间复杂度,空间复杂度。 3、数据结构 是指存储、组织数据的方式,以便高效地进行访问和修改。通过选择适当的数据结构, 能…...

2024年博客之星年度评选—主题文章创作评审文章得分公布

博客之星活动地址:https://www.csdn.net/blogstar2024 创作影响力评审入围名单:https://blogdev.blog.csdn.net/article/details/145189549 目录 主题文章创作评审得分排名 主题文章创作说明 主题文章评选说明 创作影响力评审主题文章创作评审目前排名 博…...

【科技时讯】2025年2月13日科技新闻速递

文章目录 2025年2月13日科技新闻速递1. OpenAI宣布GPT系列重大升级计划2. 华为云推出DeepSeek V3/R1满血版模型3. 全球科技行业动态4. 国内科技企业动态5. 数字经济与统计制度革新6. 资本市场与科技股表现7. 科技新闻逻辑关系图 2025年2月13日科技新闻速递 1. OpenAI宣布GPT系…...

AGI的基石:什么是机器学习

什么是机器学习:机器学习是人工智能的子集,深度学习是其重要的组成部分,包括不限于:deep neural networks 、deep belief networks和recurrent neural networks。在深度学习中,有三种基本的神经网络架构:FF…...

SQL布尔盲注+时间盲注

1.布尔盲注 双重for循环 import requestsurl http://127.0.0.1/sqli-labs-master/Less-8/index.phpdef database_name():datebasename for i in range(1, 9): # 假设数据库名称最多8个字符for j in range(32, 128): # ascii 可见字符范围从32到127payload f"?id1 A…...

2024-2025年主流的开源向量数据库推荐

以下是2024-2025年主流的开源向量数据库推荐,涵盖其核心功能和应用场景: 1. Milvus 特点:专为大规模向量搜索设计,支持万亿级向量数据集的毫秒级搜索,适用于图像搜索、聊天机器人、化学结构搜索等场景。采用无状态架…...

Mysql中使用sql语句生成雪花算法Id

🍓 简介:java系列技术分享(👉持续更新中…🔥) 🍓 初衷:一起学习、一起进步、坚持不懈 🍓 如果文章内容有误与您的想法不一致,欢迎大家在评论区指正🙏 🍓 希望这篇文章对你有所帮助,欢…...

MySQL - 索引 - 介绍

索引(Index)是帮助数据库高效获取数据的数据结构. 结构 语法 创建索引 creat [unique] index 索引名 on 表名 (字段名, ...); //创建唯一索引时加上unique, 多个字段用逗号隔开 查看索引 show index from 表名; 删除索引 drop index 索引名 on 表名;...

XSS 常用标签及绕过姿势总结

XSS 常用标签及绕过姿势总结 一、xss 常见标签语句 0x01. 标签 <a href"javascript:alert(1)">test</a> <a href"x" onfocus"alert(xss);" autofocus"">xss</a> <a href"x" onclickeval(&quo…...

Springboot中添加原生websocket支持

1、添加配置 Configuration EnableWebSocket public class WebSocketConfig implements WebSocketConfigurer {Overridepublic void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {// 注册WebSocket处理器&#xff0c;并允许所有来源的连接&#xff08;在生…...

财务主题数据分析-企业盈利能力分析

企业盈利能力数据主要体现在财务三张表中的利润表里面&#xff0c;盈利能力需要重点需要关注的指标有&#xff1a;毛利率、净利率、净利润增长率、营业成本增长率等&#xff1b; 接下来我们分析一下某上市公司披露的财务数据&#xff0c;看看该企业盈利能力如何&#xff1a; …...

你需要了解的远程登录协议——Telnet

你需要了解的远程登录协议——Telnet 一. 什么是Telnet&#xff1f;二. Telnet的优缺点三. Telnet vs SSH&#xff1a;哪一个更适合&#xff1f;四. Telnet的应用场景 前言 点个免费的赞和关注&#xff0c;有错误的地方请指出&#xff0c;看个人主页有惊喜。 作者&#xff1a;神…...

Git -> Git配置密钥对,并查看公钥

Git密钥对的核心作用 私钥 (id_rsa) 你的数字身份证&#xff1a;存放在本机 ~/.ssh 目录下必须严格保密&#xff08;类似银行卡密码&#xff09;&#xff0c;不可泄露或共享用于 解密 来自服务器的加密信息 公钥 (id_rsa.pub) 可公开的验证锁&#xff1a;需要上传到 Git 服…...

web逆向企鹅音乐,下载歌手歌单音乐

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 下载资源链接&#xff1a;https://download.csdn.net/download/randy521520/90374039 一、找出需要加密的参数 1.js运行 atob…...

stm32 lwip tcp服务端频繁接收连接失效问题解决(tcp_recved)

一、问题描述 最近用stmf429单片机作为TCP服务端遇到一个问题&#xff0c;就是客户端特别频繁的发送消息&#xff0c;过一段时间以后&#xff0c;客户端的请求不再被客户端接收到&#xff0c;而且服务器端监控的掉线回调函数也不会被调用&#xff0c;好像这个连接就凭空的消失…...

Python Pandas(7):Pandas 数据清洗

数据清洗是对一些没有用的数据进行处理的过程。很多数据集存在数据缺失、数据格式错误、错误数据或重复数据的情况&#xff0c;如果要使数据分析更加准确&#xff0c;就需要对这些没有用的数据进行处理。数据清洗与预处理的常见步骤&#xff1a; 缺失值处理&#xff1a;识别并…...

【重构谷粒商城】06:Maven快速入门教程

重构谷粒商城06——Maven快速入门教程 前言&#xff1a;这个系列将使用最前沿的cursor作为辅助编程工具&#xff0c;来快速开发一些基础的编程项目。目的是为了在真实项目中&#xff0c;帮助初级程序员快速进阶&#xff0c;以最快的速度&#xff0c;效率&#xff0c;快速进阶到…...

Elasticsearch:同义词在 RAG 中重要吗?

作者&#xff1a;来自 Elastic Jeffrey Rengifo 及 Toms Mura 探索 RAG 应用程序中 Elasticsearch 同义词的功能。 同义词允许我们使用具有相同含义的不同词语在文档中搜索&#xff0c;以确保用户无论使用什么确切的词语都能找到他们所寻找的内容。你可能会认为&#xff0c;由于…...

React 低代码项目:组件设计

React 低代码项目&#xff1a;组件设计 Date: February 6, 2025 React表单组件 **目标&#xff1a;**使用 Ant Design 表单组件&#xff0c;开发登录、注册、搜索功能 内容&#xff1a; 使用 React 表单组件、受控组件使用 Ant Design 表单组件使用 表单组件的校验和错误提…...

从0到1的回溯算法学习

回溯算法 前言这个算法能帮我们做啥算法模版力扣例题&#xff08; 以下所有题目代码都经过力扣认证 &#xff09;形式一 元素无重不可复选46.全排列思路详解代码 77.组合思路详解代码 78.子集思路详解代码 形式二 元素可重不可复选思考&#xff08;deepseek&#xff09;核心思想…...

24、深度学习-自学之路-卷积神经网络

一、你怎么理解卷积神经网络呢&#xff0c;我的理解是当你看一个东西的时候&#xff0c;你的眼睛距离图片越近&#xff0c;你看到的东西就越清晰&#xff0c;但是如果你看到的图片只是整个物体的一小部分&#xff0c;那么你将不知道你看到的物品是什么&#xff0c;因为关注整体…...

AVL树:高效平衡的二叉搜索树

&#x1f31f; 快来参与讨论&#x1f4ac;&#xff0c;点赞&#x1f44d;、收藏⭐、分享&#x1f4e4;&#xff0c;共创活力社区。&#x1f31f; 引言&#x1f914; 在数据结构的奇妙世界里&#xff0c;二叉搜索树&#xff08;BST&#xff09;原本是查找数据的好帮手。想象一下…...

RHCA练习5:配置mysql8.0使用PXC实现高可用

准备4台CentOS7的虚拟机&#xff08;CentOS7-1、CentOS7-2、CentOS7-3、CentOS7-4&#xff09; 备份原yum源的配置&#xff1a; mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup 更换阿里云镜像YUM源&#xff1a; curl -o /etc/yum.repos.…...

若输入超过 5 位数个时,推荐使用 scanf 输入数据。

【知识点】 在 C 中&#xff0c;当需要处理超过 5 位数个输入时&#xff0c;推荐使用 scanf 而不是 cin 输入数据。 这是因为 scanf 通常比 cin 更快。 另外&#xff0c;若整数超过 10 位&#xff0c;选择用 long long 型&#xff0c;而不是 int 型。 【参考文献】 https://b…...

Java 大视界 -- 边缘计算与 Java 大数据协同发展的前景与挑战(85)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

Android 原生层SurfaceView截屏

背景&#xff1a;flutter嵌入原生view时&#xff0c;原生view使用的surfaveview&#xff0c;导致下面两种方法无法正常使用。 导致flutter无法通过id找到RenderRepaintBoundary的toImage来抓取widget&#xff0c;原生层无法通过view去获取Bitmap 方案&#xff1a;使用PixelCopy…...

机器学习 - 理论和定理

在机器学习中&#xff0c;有一些非常有名的理论或定理&#xff0c;对理解机器学习的内在特性非常有帮助。本文列出机器学习中常用的理论和定理&#xff0c;并举出对应的举例子加以深化理解&#xff0c;有些理论比较抽象&#xff0c;我们可以先记录下来&#xff0c;慢慢啃&#…...