HTTP头部信息

每个HTTP请求和响应都会带有相应的头部信息,其中有的对开发人员有用,有的也没有什么用。 XHR 对象也提供了操作这两种头部(即请求头部和响应头部)信息的方法。


默认情况下,在发送 XHR 请求的同时,还会发送下列头部信息。


Accept :浏览器能够处理的内容类型。

Accept-Charset :浏览器能够显示的字符集。

Accept-Encoding :浏览器能够处理的压缩编码。

Accept-Language :浏览器当前设置的语言。

Connection :浏览器与服务器之间连接的类型。

Cookie :当前页面设置的任何Cookie。

Host :发出请求的页面所在的域 。

Referer :发出请求的页面的URI。

User-Agent :浏览器的用户代理字符串。


虽然不同浏览器实际发送的头部信息会有所不同,但以上列出的基本上是所有浏览器都会发送的。使用 setRequestHeader() 方法可以设置自定义的请求头部信息。这个方法接受两个参数:头部字段的名称和头部字段的值。要成功发送请求头部信息,必须在调用 open() 方法之后且调用 send() 方法之前调用 setRequestHeader() ,如下面的例子所示。


var xhr = new XMLHttpRequest();

xhr.onreadystatechange = function(){

    if (xhr.readyState == 4){

        if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304){

            alert(xhr.responseText);

        } else {

            alert(“Request was unsuccessful: ” + xhr.status);

        }

    }

};

xhr.open(“get”, “data.json”, true);

xhr.setRequestHeader(“MyHeader”, “MyValue”);

xhr.send(null);


服务器在接收到这种自定义的头部信息之后,可以执行相应的后续操作。我们建议读者使用自定义的头部字段名称,不要使用浏览器正常发送的字段名称,否则有可能会影响服务器的响应。有的浏览器允许开发人员重写默认的头部信息,但有的浏览器则不允许这样做。



调用 XHR 对象的 getResponseHeader() 方法并传入头部字段名称,可以取得相应的响应头部信息。而调用 getAllResponseHeaders() 方法则可以取得一个包含所有头部信息的长字符串。来看下面的例子。


var myHeader = xhr.getResponseHeader(“MyHeader”);

var allHeaders = xhr.getAllResponseHeaders();


在服务器端,也可以利用头部信息向浏览器发送额外的、结构化的数据。在没有自定义信息的情况下, getAllResponseHeaders() 方法通常会返回如下所示的多行文本内容:


Date: Sun, 14 Nov 2004 18:04:03 GMT

Server: Apache/1.3.29 (Unix)

Vary: Accept

X-Powered-By: PHP/4.3.8

Connection: close

Content-Type: text/html; charset=iso-8859-1


这种格式化的输出可以方便我们检查响应中所有头部字段的名称,而不必一个一个地检查某个字段是否存在。


本文由Web前端精髓为

长按二维码

关注我们

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值