【发布时间】:2020-05-17 05:57:13
【问题描述】:
如果 HTTP 标头包含此类信息,则以下代码可以获取当前服务器是什么:
function getServerName() {
console.log(this.getResponseHeader("Server"));
}
var oReq = new XMLHttpRequest();
oReq.open("HEAD", "somepage.html");
oReq.onload = getServerName;
oReq.send();
StackOverlow.com 没有提供任何信息,所以我尝试了 JSFiddle:https://jsfiddle.net/9zLsfay6/,它显示 nginx,一些网站显示 Apache/2.4.43 (Unix) 或 nginx/1.17.10。
fetch() 可以做类似的事情吗?我试过了
fetch("/hi").then(r => console.log("Response", r));
而Response 对象和r.headers 不包含此类信息。
【问题讨论】:
-
MDN's documentation on the Fetch API 非常详尽,包括有关您可以作为第二个参数传递给
fetch的选项的信息...... -
你的小提琴为我显示了 404,没有记录任何内容,当我编辑它以使用
onloadend(无论成功与否都会运行)它会抛出一个错误Refused to get unsafe header "Server",即我所期望的。对应的fetch命令将是fetch('somepage.html', { method: "HEAD" }).then(r => console.log(r.headers["Server"]))。 -
@HereticMonkey Strange... 在我的 Chrome 上,它自然是
404(没有这样的页面),但 console.log 显示nginx
标签: javascript xmlhttprequest fetch