HTTP 中的 HEAD 请求方法与 GET 方法类似,但是不返回请求资源的主体部分,只返回头部信息(响应码、响应头等)。HEAD 请求常用于检查资源是否存在、获取资源的元数据以及检查资源是否被修改过等。
XMLHttpRequest实现
如果要使用 GET 模拟 HEAD 请求,可以通过以下步骤来实现:
- 发送一个 GET 请求,但是在请求中添加一个自定义的请求头
{'X-HTTP-Method-Override': 'HEAD'},表示使用 HEAD 方法。 - 服务器接收到该请求时,会根据请求头中的
X-HTTP-Method-Override参数,判断该请求为 HEAD 请求,然后只返回响应头信息,不返回响应体部分。
示例代码如下:
// 创建 XMLHttpRequest 对象
const xhr = new XMLHttpRequest();
// 打开连接,使用 GET 方法
xhr.open('GET', '/path/to/resource');
// 添加自定义请求头,模拟 HEAD 请求
xhr.setRequestHeader('X-HTTP-Method-Override', 'HEAD');
// 设置回调函数
xhr.onreadystatechange = function() {
// 如果状态为完成
if (xhr.readyState === XMLHttpRequest.DONE) {
// 如果状态码为 200
if (xhr.status === 200) {
// 输出头部信息
console.log(xhr.getAllResponseHeaders());
}
}
};
// 发送请求
xhr.send(null);
需要注意的是,并非所有的服务器都支持使用 X-HTTP-Method-Override 头部来模拟 HEAD 请求,因此需要根据具体情况进行处理。
用fetch实现
使用 fetch 函数实现 HEAD 请求的方法与使用 XMLHttpRequest 的方法类似,也需要在请求头中添加一个自定义的参数 {'X-HTTP-Method-Override': 'HEAD'} 来表示使用 HEAD 方法。
示例代码如下:
fetch('/path/to/resource', {
method: 'GET',
headers: {'X-HTTP-Method-Override': 'HEAD'}
}).then(response => {
// 输出头部信息
console.log(response.headers);
});
需要注意的是,在使用 fetch 函数时,我们需要手动解析响应头信息。上面的代码中,我们可以通过 response.headers 属性来获取响应头信息。