`

8、读取响应头部——ajax基础笔记

阅读更多

你有时可能需要从服务器获取一些内容,例如,可能想“ping”一下服务器,验证服务器是否正常运行。此时,你也许只想读取服务器发出的响应首部,而忽略内容。通过读取响应首部,可以得出Content-Type(内容类型)、Content-Length(内容长度),甚至 Last-Modified(最后一次修改)的日期。

如果只关注响应首部,完成这样一个请求的标准做法是使用HEAD请求,而不是前面讨论的GET或POST请求。当服务器HEAD请求做出响应时,它只发送响应首部而忽略内容,即使可以向浏览器返回所请求的内容,也不会零点的把内容返回。由于忽略了内容,对HEAD请求的响应比对GET或POST的响应就小得多。

读取响应头部

示例展示了从XMLHttpRequest对象获取响应首部的多种方法,并介绍了这些方法在实际中的使用。页面有4个链接,分别对应从XMLHttpRequest对象读取响应首部的各个方法。

readingResponseHeaders.html清单:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Reading Response Headers</title>

<script type="text/javascript">
var xmlHttp;
var requestType = "";

function createXMLHttpRequest() {
    if (window.ActiveXObject) {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    else if (window.XMLHttpRequest) {
        xmlHttp = new XMLHttpRequest();
    }
}
    
function doHeadRequest(request, url) {
    //设置全局请求类型 读取所有头信息、读取最后一次修改时间、资源可用,资源不可用
    requestType = request;
    createXMLHttpRequest();
    xmlHttp.onreadystatechange = handleStateChange;
    //这里发送的是HEAD请求
    xmlHttp.open("HEAD", url, true);
    xmlHttp.send(null);
}
    
function handleStateChange() {
    if(xmlHttp.readyState == 4) {
        if(requestType == "allResponseHeaders") {
            getAllResponseHeaders();
        }
        else if(requestType == "lastModified") {
            getLastModified();
        }
        else if(requestType == "isResourceAvailable") {
            getIsResourceAvailable();
        }
    }
}

//打印所有响应头信息
function getAllResponseHeaders() {
    //xmlHttp.getAllResponseHeaders()得到所有头部信息
    alert(xmlHttp.getAllResponseHeaders());
}
//打印最后一次修改时间
function getLastModified() {
    //xmlHttp.getResponseHeader()最后一次修改时间头部
    alert("Last Modified: " + xmlHttp.getResponseHeader("Last-Modified"));
}

function getIsResourceAvailable() {
    //200表示资源可用
    if(xmlHttp.status == 200) {
        alert("Successful response");
    }//404表示资源未找到
    else if(xmlHttp.status == 404) {
        alert("Resource is unavailable");
    }
    else {//或是其他状态
        alert("Unexpected response status: " + xmlHttp.status);
    }
}

</script>
</head>

<body>
  <h1>Reading Response Headers</h1>
  
  <a href="javascript:doHeadRequest('allResponseHeaders', 'readingResponseHeaders.xml');">Read All Response Headers</a>
  
  <br/>
  <a href="javascript:doHeadRequest('lastModified', 'readingResponseHeaders.xml');">Get Last Modified Date</a>
  
  <br/>
  <a href="javascript:doHeadRequest('isResourceAvailable', 'readingResponseHeaders.xml');">Read Available Resource</a>
  
  <br/>
  <a href="javascript:doHeadRequest('isResourceAvailable', 'not-available.xml');">Read Unavailable Resource</a>

</body>
</html>

 readingResponseHeaders.xml清单:

<?xml version="1.0" encoding="UTF-8"?>

<readingResponseHeaders>

</readingResponseHeaders>

 

运行结果:




 

 
 

 

 

 

  • 大小: 3.2 KB
  • 大小: 6 KB
  • 大小: 4.8 KB
  • 大小: 4.3 KB
  • 大小: 4.4 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics