【问题标题】:Is it possible to handle http-header info at front-end? (using JavaScript)是否可以在前端处理 http-header 信息? (使用 JavaScript)
【发布时间】:2014-12-16 01:18:06
【问题描述】:

我正在寻找如何检测img文件的方法没有找到(404...或50x)

所以我确实弄清楚了 img-file 是什么,就像下面的步骤..

  1. 解析html和css代码,然后捕获URL
  2. 临时制作img标签,分配src=URI
  3. 检查属性(宽度,高度),如果是0值,则找不到。

最后,我想获取远程地址,如果可以,我可以找出服务器有问题!

所以我想,如果我可以在前端处理 http-header,那就太棒了!

我也考虑过使用 Ajax,但它需要额外的运行时间, 然后会导致糟糕的网络性能.....

所以! 简而言之,这是我真正的问题。 是否可以在前端处理 http-header 信息? (使用 JavaScript,不使用 chrome-dev-tool、wireshark 等任何工具..)

![如何处理这些数据?(状态、远程地址等...)][1]

【问题讨论】:

  • 图像有错误事件,无需侧载。并且 0 不是缺少的 img btw 的宽度...
  • 感谢您的快速评论!是的,但最终目的是检测服务器有问题,所以我需要它......实际上它不需要只是一个 img 文件,来自网络服务器的任何资源都可以。这只是一个例子。(img)主要问题是如何处理http-header数据。
  • 您可以使用 HEAD 请求来获取标头,但我不明白如何。为什么需要标头; img.src 将显示服务器的地址,即使在重定向之后也是如此。
  • 例如,当我们使用 'youtube.com' 时,会收到很多资源(html、css、vedie clips、img...等),但是每个服务器的 ip-addresses 都不同进入 'youtube.com'.. 有时,ip-addr 将是 1.1.1.1,有时会是 2.2.2.2,......并且引用的资源也有不同的服务器 IP。 .因此,http-header 中包含远程地址,可以区分。
  • 'img.src' 并不总是有 IP 地址。有时,它有像 'www.foo.com/img/blah/blah2' 有时,'0.0.0.0/blah/blah2' 所以我需要远程地址,来自 http-header

标签: javascript html http-headers frontend performance-testing


【解决方案1】:

不,无法从 HTTP 标头中检索 IP 地址。原因是,远程地址不是 HTTP 请求或响应标头的一部分。您唯一的选择是向 DNS 解析 API 发出 ajax 请求,并使用它将主机名解析为 IP 地址。以下是使用Statdns.com 的示例:

function hostToIp(host, callback) {
    function onComplete() {
        var res = JSON.parse(this.responseText);
        var ip = res.answer[0].rdata;
        callback(ip);
    }
    var oReq = new XMLHttpRequest();
    oReq.onload = onComplete;
    oReq.open("GET", "http://api.statdns.com/" + host + "/a", true);
    oReq.send();
}

console.time('resolve ip');
hostToIp('google.com', function(res){
    document.write(res);
    console.timeEnd('resolve ip');
});

如您所见,请求通常在 300 毫秒内解决,并且是非阻塞的。所以我认为这不会对性能产生负面影响。

【讨论】:

  • 太棒了!这几乎是我想要的,但是,我想检查每个资源的地址。似乎只有在主机的情况下,如 google.com 或 youtube.com 等。这也可能吗?像'http://www.google.com/images/A.png' ??
  • 是的。只需首先从 URL 中提取主机名。见这里 - stackoverflow.com/questions/8498592/…
  • 完美!非常感谢!
  • 如果我的回答对你有用,请标记为正确
  • 哦,抱歉忘记了。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-12
  • 2021-07-03
相关资源
最近更新 更多