使用JavaScript检查URL内容类型

10
为了节约服务器资源,我正在寻找一种使用JavaScript检索给定URL的内容类型的方法。它不应该从URL下载完整的内容,只需要下载头部信息。在JavaScript的限制下,这种操作是否可行?

我想你看过这个问题了吧:http://stackoverflow.com/questions/15685866/how-to-get-content-type-of-a-given-url-inside-javascript? - ForguesR
1
发送一个 HEAD 请求。完成! - epascarello
所以我认为对于外部URL来说是不可能的。 - Belgin Fish
这并非不可能,而是取决于服务器是否启用了CORS。 - epascarello
2个回答

14
使用头请求进行Ajax调用。
var url = window.location.href;
var xhttp = new XMLHttpRequest();
xhttp.open('HEAD', url);
xhttp.onreadystatechange = function () {
    if (this.readyState === this.DONE) {
        console.log(this.status);
        console.log(this.getResponseHeader("Content-Type"));
    }
};
xhttp.send();

跨域 URL 怎么样? - Exlord
@Exlord 如果他们有CORS,那当然可以,如果没有,就让你的服务器端来处理它。 - epascarello

1
如果您的服务器不允许 HEAD 请求但允许 GET 请求,您可以通过限制 GET 请求的范围来实现此操作。
var xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", url, true);
xmlhttp.setRequestHeader("Range", "bytes=0");
xmlhttp.onreadystatechange = function () {
  if (this.readyState == this.DONE) {
    console.log(this.getResponseHeader("Content-Type"));
  }
};
xmlhttp.send();

这对我有效。而且,如果你想使用箭头函数代替匿名函数,在代码中将“this”更改为“xmlhttp”。 - Thales Ludwig

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接