【问题标题】:Can JavaScript's fetch() also fetch any header info such as Server like xhr can?JavaScript 的 fetch() 也可以像 xhr 一样获取任何标头信息吗?
【发布时间】: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


【解决方案1】:

const headers = await fetch('url', {method: 'HEAD' });

【讨论】:

    【解决方案2】:

    经过更多研究并来自@HereticMonkey 的注释:

    fetch("/").then(r => console.log(r.headers.get("Server")))
    

    示例:https://jsfiddle.net/wq4r2use/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 2021-05-07
      • 2021-11-30
      • 1970-01-01
      • 1970-01-01
      • 2022-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多