ETag的值是通过HTTP响应头部字段传递给客户端的。服务器在响应中使用ETag
头部字段来发送ETag值给客户端。以下是将ETag值传递给客户端的HTTP响应示例:
HTTP/1.1 200 OK
ETag: "abc123"
Content-Length: 1234
Content-Type: text/plain
Response body...
在上述示例中,ETag: "abc123"
行表示服务器生成的ETag值为abc123
。客户端将在将来的请求中使用此ETag值来验证资源的完整性。
需要注意的是,服务器还可以在其他HTTP响应头部字段中包含与ETag相关的信息,以提供更多的资源验证和缓存控制。例如,服务器可以使用Cache-Control
头部字段指定ETag的缓存策略,或使用Last-Modified
头部字段指定资源的最后修改时间。
客户端在收到包含ETag的HTTP响应后,可以将ETag值存储在缓存中,以备将来的请求使用。当客户端发送新的请求时,可以使用If-None-Match
请求头部字段将先前获取的ETag值发送给服务器,以验证资源的完整性。
例如,客户端发送带有If-None-Match
请求头的GET请求:
GET /resource HTTP/1.1
If-None-Match: "abc123"
通过在请求中发送ETag值,客户端告诉服务器:“我有一个资源副本,其ETag值为abc123
,请告诉我这个副本是否仍然有效。”
服务器接收到请求后,将使用收到的ETag值与当前资源的ETag进行比较,并返回相应的响应(例如304 Not Modified
或新的资源副本),以供客户端进一步处理。