是否可以仅使用 JavaScript 中的 XMLHTTPRequest 来执行 HTTP Head 请求?
我的动机是节省带宽。
如果不是的话,可以造假吗?
简单,只需使用 HEAD 方法,而不是 GET 或 POST:
function UrlExists(url, callback)
{
var http = new XMLHttpRequest();
http.open('HEAD', url);
http.onreadystatechange = function() {
if (this.readyState == this.DONE) {
callback(this.status != 404);
}
};
http.send();
}
这只是一个简短的例子来展示如何使用 HEAD 方法。生产代码可能需要针对不同结果状态(成功、失败、超时)进行更细粒度的回调,并且可能使用不同的 事件处理程序(
onload
、onerror
和 ontimeout
,而不是 onreadystatechange
)。
更现代的方法是使用 Fetch API 取代
XMLHttpRequest
。
例如(在
async
函数内)
const url = "https://example.com";
const response = await fetch(url, { method: "HEAD" });
console.log(`Got status: ${response.status}`);
XMLHTTPRequest 对象应该具有
getAllResponseHeaders();
getResponseHeader("header-name")
定义在上面