推荐答案
HTTP 协议中的 Location 头部用于在响应中指示客户端应该重定向到的 URL。它通常与 3xx 状态码(如 301 Moved Permanently 或 302 Found)一起使用,告诉客户端资源已经被移动到了一个新的位置。
用法示例
HTTP/1.1 302 Found Location: https://example.com/new-location
在这个例子中,服务器告诉客户端资源已经被临时移动到了 https://example.com/new-location,客户端应该向这个新的 URL 发起请求。
本题详细解读
作用
Location 头部的主要作用是指示客户端进行重定向。当服务器返回一个 3xx 状态码时,客户端会根据 Location 头部的值自动向新的 URL 发起请求。这对于处理资源迁移、URL 重写或负载均衡等场景非常有用。
使用场景
- 永久重定向(301):当资源的 URL 永久改变时,服务器会返回
301 Moved Permanently状态码,并在Location头部中指定新的 URL。 - 临时重定向(302):当资源的 URL 临时改变时,服务器会返回
302 Found状态码,并在Location头部中指定临时的 URL。 - 其他重定向:如
303 See Other、307 Temporary Redirect等,也会使用Location头部来指定重定向的目标。
注意事项
Location头部的值必须是一个绝对 URL,不能是相对路径。- 如果
Location头部指定的 URL 无效,客户端可能会忽略重定向请求。 - 在某些情况下,
Location头部也可以用于非重定向的场景,例如在201 Created响应中指示新创建资源的 URL。
示例代码
const http = require('http');
http.createServer((req, res) => {
res.writeHead(302, { 'Location': 'https://example.com/new-location' });
res.end();
}).listen(3000);在这个 Node.js 示例中,服务器会在收到请求时返回 302 Found 状态码,并在 Location 头部中指定重定向的目标 URL。