当前位置: 首页 > 图文教程 > 网络编程 > Javascript > HTTP消息头字段深入介绍

Javascript
为调试JavaScript添加输出窗口的代码
Js 中debug方式
一些mootools的学习资源
JavaScript 精粹读书笔记(1,2)
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
数组Array进行原型prototype扩展后带来的for in遍历问题
javascript 鼠标拖动图标技术
比较搞笑的js陷阱题
js 自定义的联动下拉框
js 省地市级联选择
JavaScript 类似flash效果的立体图片浏览器
JavaScript Event学习第九章 鼠标事件
jQuery AJAX回调函数this指向问题
toString()一个会自动调用的方法
jQuery 文本框模拟下拉列表效果
关于页面被拦截的问题
javascript 解析url的search方法
一个XML格式数据转换为图表的例子
Javascript 获取链接(url)参数的方法[正则与截取字符串]
一些收集整理非常不错的JS效果代码

Javascript 中的 HTTP消息头字段深入介绍


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-28   浏览: 181 ::
收藏到网摘: n/a

 

一、通用头字段

 

1. Connection

 

这个字段只在HTTP1.1协议中存在。它决定了客户端和服务器进行了一次会话后,服务器是否立即关闭网络连接。在客户端最直接的表现是使用read方法(readLine方法也是一样)读完客户端请求的Web资源后,是否立即返回-1(readLine返回null)。Connection有两个值:Close和Keep-Alive.当使用Connection:Close时,和HTTP1.0协议是一样的,当read方法读完数据时立即返回;而使用Connection:Keep-Alive时,read方法在读完数据后还要被阻塞一段时间。直接读取数据超时时间过后,还继续往下执行。在上一篇文章中讨论的readHttpResponse(……)方法实现的第011行可以验证Connection的作用。下面让我们来使用HTTP模拟器来做一个实验。

 

(1)在HTTP模拟器中输入如下的域名:

 

www.baidu.com

 

(2)HTTP模拟器中输入如下的HTTP请求信息:

 

GET / HTTP/1.1
Host: www.baidu.com

 

(3)按两下回车(输入一个空行)后,发送请求消息,并得到如图1如示的HTTP响应消息头:

 

 

 

图1

(4)输入y或Y后(在显示http响应头后,要立刻输入Y或y),显示响应消息的内容。在显示完内容后,大约过了10秒钟才进入"host:port>"提示符(因为在sendHttpRequest()的实现代码中的004行设置了读取数据超时)。

 

(5)在"host:port>"提示符下直接按回车,输入最近一次使用的域名www.baidu.com和80端口。再次输入如下的HTTP请求:

 

GET / HTTP/1.1
Host: www.baidu.com
Connection: close

 

输入完以上的HTTP请求后,重新执行第3、4步操作。最后在显示HTTP响应消息内容后,直接直入了"host:port>"提示符。除了这种方法,将请求的第一行改为GET / HTTP/1.0.这样也可以无需等待直接结束。

 

通过设置Connection,可以在下载Web资源(如多线程下载工具、Web浏览器等)后,立即断开网络连接,这样可以有效地降低客户机的资源消耗。

 

2. Date

 

这个Date头字段描述了请求消息和响应消息被创建的时间。这个字段值是一个HTTP-date类型,它的格式必须是GMT(格林尼治)时间,GMT时间是就是北京时间减8小时。下面是Date字段的一个例子:

 

Date: Tue, 15 Nov 2007 08:12:31 GMT

 

3. Content-Length

 

指定消息实体的字节数。在请求消息中POST方法必须使用Content-Length来指定请求消息的实体内容的字节数。在响应消息中这个字段值指定了当前HTTP响应所返回的Web资源的字节数。

 

三、HTTP响应消息头字段

 

1. Accept-Ranges

 

这个字段说明Web服务器是否支持Range(是否支持断点续传功能),如果支持,则返回Accept-Ranges: bytes,如果不支持,则返回Accept-Ranges: none.

 

2. Content-Range

 

指定了返回的Web资源的字节范围。这个字段值的格式是:

 

开始字节位置—结束字节位置/Web资源的总字节数

 

下面是一个使用Content-Range的例子:

 

Content-Range:1000-3000/5000

 

测试

 

在HTTP模拟器中连接服务器files.cnblogs.com,并输入如下的HTTP请求消息:

 

GET /nokiaguy/HttpSimulator.rar HTTP/1.1
Host: files.cnblogs.com
Range: bytes=1000-

 

返回的响应消息头如图2所示:

 

 

 

图2

从上图可以看出,服务器files.cnblogs.com支持断点继传功能。而且还可以验证Content-Length的值是当前会话传过来的字节数,并不是Web资源的总的字节数。而Content-Range字段值中"/"后面的数才是Web资源总的字节数。

 

3. Location

 

这个字段指定了上哪个新地址获得新的Web资源。当Web资源更换URL后,而一些老用户不能及时得知这个新的URL;因此,在老用户访问原来的URL时,使用Location将这个新的URL返回给客户端。这个地址转换对用户来说是完全透明。

 

二、HTTP请求消息头字段

 

1. Host

 

Host字段用于指定客户端所访问的资源所在的主机名和端口号。如果端口号等于连接服务器时所使用的端口号,则端口号可以省略。下面是一个使用Host字段的一个例子:

 

Host: www.sina.com.cn

 

这个字段是必须的,如果HTTP请求不包含这个字段,服务器将返回400(Bad Request)响应状态。

 

2. Accept

 

Accept字段头确定客户端可以接收的媒体类型。一般的格式是"*/*"或"类型/"子类型".这个子段头可以传递多个媒体类型,中间用","隔开。如下面是一个Accept的例子:

 

Accept::image/gif,image/jpg

 

如果请求头使用上述的Accept字段值,则服务器端在动态生成网页的IMG头时将首先包含gif格式的图像,如果gif图象不存在,则包含jpg格式的图象。

 

3. User-Agent

 

这个字段头用于指定客户端是用什么访问的服务器,如果是IE6浏览器,并且本机安装了。net 2.0,则User-Agent会有如下的值:

 

User-Agent: Mozilla/4.0 (
compatible; MSIE 6.0; Windows NT 5.2; SV1; Maxthon; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1; InfoPath.2)

 

服务器可以通过这个字段检查客户机的浏览器版本,并根据不同的版本来确定向客户端发送的数据。

 

4. Range

 

Range字段头通过服务器只传输一部分Web资源。这个字段头可以用来实现断点续传功能。有很多下载工具就是通过这个字段头进行断点续传的。Range字段可以通过三种格式设置要传输的字节范围:

 

(1)Range: bytes=1000-2000

 

传输范围从1000到2000字节。

 

(2)Range: bytes=1000-

 

传输Web资源中第1000个字节以后的所有内容。

 

(3)Range bytes=1000

 

传输最后1000个字节。