HTTP 响应头详解
Access-Control-Allow-Credentials
在处理跨域资源共享(CORS)时,后端通常会设置以下响应头:
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin
的值为 https://example.com
,表示仅允许来自该域名的请求进行跨域访问服务端资源。此时,Access-Control-Allow-Origin
的值是明确指定的,而非通配符 *
。
在这种情况下,Access-Control-Allow-Credentials
必须设置为 true
,否则会引发安全问题。
Access-Control-Allow-Origin
Access-Control-Allow-Origin
字段用于指定允许跨域访问的来源地址。
Access-Control-Allow-Origin: https://example.com
此字段是服务器端设置的响应头部,客户端无法自行设置。当客户端请求跨域资源时,服务器端会根据请求中的 Origin
字段判断是否允许该来源访问。如果允许,服务器将在响应头中设置 Access-Control-Allow-Origin
字段,通知浏览器允许跨域访问。
Cache-Control
Cache-Control
用于控制浏览器和代理服务器缓存响应内容的行为。
Cache-Control: no-cache, no-store
no-cache
和 no-store
表示浏览器或代理服务器接收到响应后,不能将响应内容存储在缓存中。这确保每次请求都必须重新从服务器获取最新内容,并在使用前验证内容状态是否发生变化。虽然这样可以确保客户端接收到最新的数据,但会增加服务器负担和响应时间。
Connection
Connection
头部字段用于管理客户端与服务器之间的连接持久性。
Connection: keep-alive
在 HTTP/1.1 和 HTTP/2 中,keep-alive
是默认开启的。它指示客户端和服务器之间的连接应保持持久性,以便复用相同的 TCP 连接,减少连接建立的开销并节省服务器资源。
Content-Type
Content-Type
是 HTTP 头部中的一个字段,用于指示请求或响应中包含的实体数据类型。
Content-Type: application/json; charset=UTF-8
此示例表示实体数据类型为 JSON 格式,字符集为 UTF-8。
Date
Date
字段标示 HTTP 消息的生成时间或修改时间,使用 GMT 时间表示。
Date: Fri, 28 Apr 2023 01:40:55 GMT
在 HTTP 通信中,Date
字段用于缓存控制、时间比较和日志记录等需要时间信息的场合。所有 HTTP 响应消息头部的日期时间都应使用 GMT 时间,以确保全球标准的一致性,不受本地时区或夏令时的影响。
Server
Server
头部字段指明服务器软件的信息。
Server: nginx/1.21.1
此示例显示服务器软件为 Nginx,版本号为 1.21.1。
Set-Cookie
Set-Cookie
用于指示浏览器存储的 Cookie 信息。
Set-Cookie: rememberMe=deleteMe; Path=/mip-base; Max-Age=0; Expires=Thu, 27-Apr-2023 01:40:55 GMT
Path
指定 Cookie 可以发送到的路径。在此示例中,路径为/mip-base
,表示此 Cookie 仅在该路径下的请求中发送。Max-Age
定义了 Cookie 的有效期,以秒为单位。值为0
表示此 Cookie 已过期,需从浏览器中删除。Expires
指定了 Cookie 的过期时间,格式为具体的日期时间字符串。在此示例中,Expires
为Thu, 27-Apr-2023 01:40:55 GMT
,表示 Cookie 的生命周期从发送时间起至指定日期时间结束。
Transfer-Encoding
Transfer-Encoding
指定 HTTP 消息中使用的传输编码方式。
Transfer-Encoding: chunked
分块传输编码是 HTTP/1.1 协议中定义的一种用于传输超大数据的编码方式。它通过将大的数据分成多个小块(chunk),并在每个块之前添加长度标识,从而分多次传输。每个块的大小不固定,因此在每个块的首部添加一个十六进制的长度标识,确保客户端能够正确接收数据。服务器发送完所有数据后,会发送一个长度为 0
的块,表示所有数据已发送完成,连接此时关闭。
分块传输编码允许服务器在传输大文件时无需等待整个文件读取完毕即可开始发送,提升了数据传输速度。
Vary
Vary
头部字段用于指示服务器对不同请求头的响应可能不同,从而影响缓存策略。
Vary: Origin
服务端在响应头中设置 Vary: Origin
,客户端在缓存响应结果时,会将原始请求中的 Origin
字段一同考虑。这意味着缓存将基于 Origin
字段的不同值进行区分,确保跨域请求的响应内容正确。
客户端请求时,应添加 Origin
字段,指明请求来源的域名:
Origin: https://www.example.com
X-Application-Context
X-Application-Context
是一个自定义的 HTTP 响应头,常用于追踪和诊断应用程序的运行状态。
X-Application-Context: mip-framework-web:60003
在此示例中,X-Application-Context
包含了应用程序的上下文信息,包括应用程序名称 mip-framework-web
和端口号 60003
。这有助于在多实例或分布式环境中识别具体的应用实例。