目录
- 请求头
- 响应头
-
-
- 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-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-9iiX81ilZ3U
和CXMzkisGev1
,是唯一的请求标识符,便于在服务器日志中查找和分析特定请求。
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:
- HTTP 401 错误 - 未授权: (Unauthorized)
您的Web服务器认为,客户端发送的 HTTP 数据流是正确的,但进入网址 (URL) 资源 , 需要用户身份验证 , 而相关信息 1 )尚未被提供, 或 2 )已提供但没有通过授权测试。这就是通常所知的" HTTP 基本验证 "。 需客户端提供的验证请求在 HTTP 协议中被定义为 WWW -- 验证标头字段 (WWW-Authenticate header field)
桌面应用程序一般不会使用cookie, 而是把 "用户名+冒号+密码"用BASE64编码的字符串放在http request 中的header Authorization中发送给服务端, 这种方式叫HTTP基本认证(Basic Authentication)。
- 原因:
因为request中没有包含Authorization header,服务器会返回一个401 Unauthozied给客户端,并且在Response的header"www-authentivate"中添加信息。当客户端把用户名密码用Base64加密后编码,放在Authorization header中发送给服务器,那么就会认证成功了。
- 场景及办法:
最近用postman偶然遇见了401的报错,是请求用户的token这个接口的时候,所有的Body请求参数和Headers都一样,但是就是报错401。喊了后端过来看了好久哈哈哈,忘了加Authorization这个请求Header了。解决办法就是,在Headers中添加基本认证的键值对。这个键值对如下:
Authorization:Basic YKKOw9MPlY3JldA==(注意:这里的Base64位编码我随便写的,可以随意看看)
http://blog.csdn.net/u013136708/article/details/41210897
二、403:
- HTTP 403 Forbidden - 拒绝访问
403 Forbidden 是HTTP协议中的一个状态码(Status Code)。可以简单的理解为没有权限访问此站。
该状态表示 服务器理解了本次请求但是拒绝执行该任务,该请求不该重发给服务器。在HTTP请求的方法不是"HEAD",并且服务器想让客户端知道为什么没有权限的情况下,服务器应该在返回的信息中描述拒绝的理由。在服务器不想提供任何反馈信息的情况下,服务器可以用404 Not Found代替403 Forbidden。
-
原因:
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.
-
场景及办法:
前几天偶然看到了这个报错403,是当时我们链接地址是https://www.ceshi.com; 但是却被谁谁谁配置成了http://www.ceshi.com;最后就会导致403的报错。解决办法:就是将http改成https。
细看了下:这个错误应该是403.4。403.4错误是由于要求SSL而造成的,您必须在要查看的网页的地址中使用"https"。