HTTP的头域包含通用头,通用头域包涵呼吁和响应音讯都辅助的头域

HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用来传送WWW形式的数额,关于HTTP
协议的详细内容请参
考RFC2616。HTTP协议利用了请求/响应模型。客户端向服务器发送一个呼吁,请求头包括呼吁的主意、URI、协议版本、以及包罗呼吁修饰符、客户
音讯和内容的类似于MIME的信息结构。服务器以一个境况行作为响应,相应的始末囊括音讯协议的本子,成功仍然失实编码加上含有服务器消息、实体元音信以
及只怕的实业内容。
一般性HTTP新闻包罗客户机向服务器的请求音信和服务器向客户机的响应新闻。那两种类型的音信由一个伊始行,一个只怕多少个头域,一个只是头域甘休的空行和可
选的音讯体组成。HTTP的头域包含通用头,请求头,响应头和实体头七个部分。逐个头域由一个域名,冒号(:)和域值三有的构成。域名是深浅写毫不相关的,域
值前可以增进任何数据的空格符,头域可以被增加为多行,在每行初步处,使用至少一个空格或制表符。
通用头域
通用头 域包罗呼吁和响应音讯都协助的头域,通用头域包括Cache-Control、
Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的恢弘须求通信双方都帮忙此伸张,借使存在不辅助的通用头域,一般将会作为实体头域处理。下边不难介绍多少个在UPnP音讯中应用的通用头域。
Cache-Control头域
Cache -Control指定请求和响应听从的缓存机制。在呼吁音讯或响应音信中设置
Cache-Control并不会修改另一个音信处理过程中的缓存处理进度。请求时的缓存指令包蕴no-cache、no-store、max-age、
max-stale、min-fresh、only-if-cached,响应新闻中的指令蕴涵public、private、no-cache、no-
store、no-transform、must-revalidate、proxy-revalidate、max-age。各种音信中的指令含义如
下:
Public提示响应可被其他缓存区缓存。
Private提示对于单个用户的一体或一些响应音讯,无法被共享缓存处理。那允许服务器仅仅描述当用户的一部分响应音信,此响应音讯对于其他用户的乞请无效。
no-cache提醒请求或响应音讯不可能缓存
no-store用于幸免重大的音信被无意识的公布。在伸手音信中发送将使得请求和响应音讯都不应用缓存。
max-age提醒客户机可以接到生存期不当先指定时间(以秒为单位)的响应。
min-fresh提示客户机可以接受响应时间低于当明天子拉长指定时间的响应。
max-stale指示客户机可以收到超出超时中间的响应音信。如若指定max-stale音讯的值,那么客户机可以接到超出超时期指定值之内的响应新闻。
Date头域
Date头域表示音信发送的时刻,时间的叙述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的日子表示世界标准时,换算开销地时间,需求知道用户所在的时区。
Pragma头域
Pragma头域用来含有落成特定的下令,最常用的是Pragma:no-cache。在HTTP/1.1共谋中,它的意义和Cache-
Control:no-cache相同。
伸手音讯
请求音讯的首先作为上面的格式:
MethodSPRequest-URISPHTTP-VersionCRLFMethod
表示对此Request-URI达成的不二法门,这么些字段是大大小小写敏感的,包蕴OPTIONS、GET、HEAD、POST、PUT、DELETE、
TRACE。方法GET和HEAD应该被所有的通用WEB服务器辅助,其余具备办法的落实是可选的。GET方法取回由Request-URI标识的消息。
HEAD方法也是收复由Request-URI标识的音讯,只是能够在响应时,不回去新闻体。POST方法可以请求服务器收到包蕴在央浼中的实体音讯,可以用来提交表单,向音讯组、BBS、邮件群组和数据库发送音讯。
SP表示空格。Request-URI听从URI格式,在此字段为星
号(*)时,表明请求并不用于某个特定的资源地址,而是用于服务器本身。HTTP-
Version表示帮忙的HTTP版本,例如为HTTP/1.1。CRLF表示换行回车符。请求头域允许客户端向服务器传递关于请求大概有关客户机的附加
音信。请求头域恐怕含有下列字段Accept、Accept-Charset、Accept-
Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If-
Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、马克斯-Forwards、
Proxy-Authorization、Range、Referer、User-Agent。对请求头域的恢弘须求通信双方都支持,若是存在不辅助的请
求头域,一般将会作为实体头域处理。
数一数二的伸手音讯:
GET http://download.microtool.de:80/somedata.exe
Host: download.microtool.de
Accept:*/*
Pragma: no-cache
Cache-Control: no-cache
Referer: http://download.microtool.de/
User-Agent:Mozilla/4.04[en](Win95;I;Nav)
Range:bytes=554554-
上例第一行表示HTTP客户端(或然是浏览器、下载程序)通过GET方法拿到指定URL下的文本。浅湖蓝的有的代表请求头域的新闻,银灰的局地代表通用尾部分。
Host头域
Host头域指定请求资源的Intenet主机和端口号,必须代表请求url的原来服务器或网关的地方。HTTP/1.1伸手必须包括主机头域,否则系统会以400状态码重回。
Referer头域
Referer
头域允许客户端指定请求uri的源资源地址,那可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或不当的连年由于爱戴的目标被
追踪。假诺请求的uri没有和谐的uri地址,Referer无法被发送。倘若指定的是一些uri地址,则此地方应该是一个相对地址。
Range头域
Range头域可以请求实体的一个仍然多个子范围。例如,
表示头500个字节:bytes=0-499
表示首个500字节:bytes=500-999
意味着最后500个字节:bytes=-500
代表500字节将来的限制:bytes=500-
首个和尾声一个字节:bytes=0-0,-1
再就是指定多少个范围:bytes=500-600,601-999
唯独服务器可以忽略此请求头,假使无条件GET包含Range请求头,响应会以状态码206(PartialContent)重返而不是以200
(OK)。
User-Agent头域
User-Agent头域的始末涵盖发出请求的用户音信。
一呼百应音讯
响应新闻的第一作为上边的格式:
HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF
HTTP -Version代表帮忙的HTTP版本,例如为HTTP/1.1。Status-
Code是一个七个数字的结果代码。Reason-布Leighton足球俱乐部海滩se给Status-Code提供一个简练的文件描述。Status-Code首要用以机器自
动识别,Reason-热水海滩se紧要用以救助用户通晓。Status-Code的首先个数字定义响应的体系,后三个数字尚未分类的职能。首个数字只怕取5个例外的值:
1xx:新闻响应类,表示接受到请求并且两次三番处理
2xx:处理成功响应类,表示动作被成功接到、精通和接受
3xx:重定向响应类,为了形成指定的动作,必须承受进一步处理
4xx:客户端错误,客户请求包含语法错误可能是不或许正确执行
5xx:服务端错误,服务器不可以科学执行一个正确的伸手
一呼百应头域允许服务器传递无法放在状态行的附加音讯,这几个域首要描述服务器的消息和
Request-URI进一步的消息。响应头域包涵Age、Location、Proxy-Authenticate、Public、Retry-
After、Server、Vary、Warning、WWW-Authenticate。对响应头域的增加须求通信双方都辅助,若是存在不协理的响应头
域,一般将会作为实体头域处理。
出色的响应新闻:
HTTP/1.0200OK
Date:Mon,31Dec200104:25:57GMT
Server:Apache/1.3.14(Unix)
Content-type:text/html
Last-modified:Tue,17Apr200106:46:28GMT
Etag:”a030f020ac7c01:1e9f”
Content-length:39725426
Content-range:bytes554554-40279979/40279980
上例第一行表示HTTP服务端响应一个GET方法。中蓝的一些代表响应头域的音讯,深青莲的部分代表通用底部分,蛋青的部分代表实体头域的音信。
Location响应头
Location响应头用于重定向接收者到一个新URI地址。
Server响应头
Server响应头包罗处理请求的原始服务器的软件音讯。此域能包涵多少个产品标识和注释,产品标识一般遵从重点排序。
实体
呼吁新闻和响应消息都足以涵盖实体音信,实体消息一般由实体头域和实体组成。实体头域包涵关于实体的原新闻,实体头包含Allow、Content-
Base、Content-Encoding、Content-Language、
Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、
Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实体
头,然而这个域大概不能未接受方识别。实体可以是一个透过编码的字节流,它的编码方式由Content-Encoding或Content-Type定
义,它的尺寸由Content-Length或Content-Range定义。
Content-Type实体头
Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实业介质类型,或GET方法发送的呼吁介质类型
Content-Range实体头
Content-Range实体头用于指定整个实体中的一有的的插入地方,他也提示了全套实体的尺寸。在服务器向客户重临一个片段响应,它必须描述响应覆盖的限制和所有实体长度。一般格式:
Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth
譬如,传送头500个字节次字段的方式:Content-Range:bytes0-
499/1234如若一个http音信包括此节(例如,对范围请求的响应或对一系列范围的重叠请求),Content-Range表示传送的界定,
Content-Length代表其实传送的字节数。
Last-modified实体头

HTTP(HyperTextTransferProtocol)是超文本传输协议的缩写,它用来传送WWW方式的多少,关于HTTP协议的事无巨细内容请参见RFC2616。HTTP协议使用了请求/响应模型。客户端向服务器发送一个伸手,请求头包涵呼吁的办法、URI、协议版本、以及富含呼吁修饰符、客户新闻和内容的类似于MIME的音讯结构。服务器以一个情状行作为响应,相应的情节包括音信协议的版本,成功仍旧不当编码加上含有服务器音信、实体元音信以及大概的实体内容。

应答头
说明

常备HTTP音讯包含客户机向服务器的呼吁新闻和服务器向客户机的响应音讯。这二种档次的新闻由一个伊始行,一个要么七个头域,一个只是头域停止的空行和可选的音讯体组成。HTTP的头域包涵通用头,请求头,响应头和实业头几个部分。每一个头域由一个域名,冒号(:)和域值三有些组成。域名是大大小小写非亲非故的,域值前能够增加任何数据的空格符,头域可以被增添为多行,在每行发轫处,使用至少一个空格或制表符。

Allow
服务器协理什么请求方法(如GET、POST等)。

通用头域

Content-Encoding

档的编码(Encode)方法。唯有在解码之后才可以取得Content-Type头指定的始末类型。利用gzip压缩文档可以分明地裁减HTML文档的
下载时间。Java的GZIPOutputStream可以很便利地开展gzip压缩,但唯有Unix上的Netscape和Windows上的IE
4、IE
5才支撑它。由此,Servlet应该经过查看Accept-Encoding头(即request.getHeader(“Accept-
Encoding”))检查浏览器是不是支持gzip,为支撑gzip的浏览器重临经gzip压缩的HTML页面,为别的浏览器重返普通页面。

通用头域包蕴呼吁和响应音讯都协助的头域,通用头域包罗Cache-Control、Connection、Date、Pragma、Transfer-Encoding、Upgrade、Via。对通用头域的增添要求通信双方都支持此增加,假设存在不辅助的通用头域,一般将会作为实体头域处理。上边不难介绍多少个在UPnP信息中采用的通用头域。

Content-Length

示内容长度。唯有当浏览器采取持久HTTP连接时才须要以此数额。假设你想要利用持久连接的优势,能够把出口文档写入
ByteArrayOutputStram,完毕后翻看其尺寸,然后把该值放入Content-Length头,最终经过
byteArrayStream.writeTo(response.getOutputStream()发送内容。

Cache-Control头域

Content-Type
意味着前边的文档属于怎么MIME类型。Servlet暗中同意为text/plain,但普通需求显式地指定为text/html。由于常常要设置Content-Type,由此HttpServletResponse提供了一个专用的方法setContentTyep。

Cache-Control指定请求和响应遵从的缓存机制。在伸手新闻或响应音信中安装Cache-Control并不会修改另一个音信处理进度中的缓存处理进程。请求时的缓存指令包蕴no-cache、no-store、max-age、max-stale、min-fresh、only-if-cached,响应音讯中的指令包蕴public、private、no-cache、no-store、no-transform、must-revalidate、proxy-revalidate、max-age。各样音讯中的指令含义如下:

Date
此时此刻的GMT时间。你可以用setDateHeader来设置那一个头以避免转换时间格式的分神。

Public指示响应可被其它缓存区缓存。
Private指示对于单个用户的凡事或局地响应音信,不只怕被共享缓存处理。那允许服务器仅仅描述当用户的部分响应信息,此响应新闻对于其余用户的乞求无效。
no-cache指示请求或响应新闻不可以缓存
no-store用于幸免重大的新闻被无意识的揭发。在呼吁音信中发送将使得请求和响应音讯都不选取缓存。
max-age指示客户机可以选拔生存期不当先指定时间(以秒为单位)的响应。
min-fresh指示客户机可以收到响应时间低于当前时间拉长指定时间的响应。
max-stale指示客户机可以接受超出超时里面的响应新闻。即便指定max-stale音讯的值,那么客户机可以选用超出超时期指定值之内的响应消息。

Expires
应该在如何时候觉得文档已经晚点,从而不再缓存它?

Date头域

Last-Modified

档的最后改动时间。客户可以透过If-Modified-Since请求头提供一个日子,该请求将被视为一个规范GET,唯有改变时间迟于指定时间的文档
才会回来,否则重回一个304(Not
Modified)状态。Last-Modified也可用setDateHeader方法来安装。

Date头域表示消息发送的大运,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的小时代表世界标准时,换算开支地时间,须要精晓用户所在的时区。

Location
意味着客户应当到何地去领取文档。Location经常不是一向设置的,而是经过HttpServletResponse的sendRedirect方法,该方法同时安装意况代码为302。

Pragma头域

Refresh
意味着浏览器应该在稍微时间以往刷新文档,以秒计。除了刷新当前文档之外,你还是可以透过setHeader(“Refresh”,
“5; URL=http://host/path")让浏览器读取指定的页面。
注 意那种意义平日是经过安装HTML页面HEAD区的<META HTTP-EQUIV=”Refresh”
CONTENT=”5;URL=http://host/path">实现,这是因为,自动刷新或重定向对于那些不能使用CGI或Servlet的
HTML编写者极度第一。但是,对于Servlet来说,直接设置Refresh头尤其有利于。
在意Refresh的意义是“N秒之后
刷新本页面或访问指定页面”,而不是“每隔N秒刷新本页面或访问指定页面”。由此,一而再刷新须求每便都发送一个Refresh头,而发送204气象代码则
可以阻止浏览器继续刷新,不管是使用Refresh头如故<META
HTTP-EQUIV=”Refresh” …>。
留神Refresh头不属于HTTP
1.1标准规范的一局地,而是一个恢弘,但Netscape和IE都协助它。

Pragma头域用来含有落成特定的通令,最常用的是Pragma:no-cache。在HTTP/1.1说道中,它的意思和Cache-Control:no-cache相同。

Server
服务器名字。Servlet一般不设置那么些值,而是由Web服务器本身安装。

呼吁音信

Set-Cookie
安装和页面关联的Cookie。Servlet不应使用response.setHeader(“Set-Cookie”,
…),而是应运用HttpServletResponse提供的专用方法addCookie。参见下文有关Cookie设置的座谈。

恳请信息的率先作为上面的格式:
MethodSPRequest-URISPHTTP-VersionCRLFMethod表示对此Request-URI已毕的方法,那几个字段是深浅写敏感的,包涵OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE。方法GET和HEAD应该被有着的通用WEB服务器协助,其余兼具办法的完结是可选的。GET方法取回由Request-URI标识的音讯。HEAD方法也是收复由Request-URI标识的音讯,只是能够在响应时,不回来信息体。POST方法可以请求服务器收到包括在呼吁中的实体音信,可以用于提交表单,向信息组、BBS、邮件群组和数据库发送音讯。

WWW-Authenticate

户应该在Authorization头中提供什么样品种的授权音讯?在包蕴401(Unauthorized)状态行的回复中那一个头是必需的。例如,
response.setHeader(“WWW-Authenticate”, “BASIC
realm=\”executives\””)。
留意Servlet一般不举办那上头的拍卖,而是让Web服务器的专门机制来决定受密码爱护页面的造访(例如.htaccess)。

SP表示空格。Request-URI遵从URI格式,在此字段为星号(*)时,表达请求并不用于某个特定的资源地址,而是用于服务器本身。HTTP-Version表示援救的HTTP版本,例如为HTTP/1.1。CRLF代表换行回车符。请求头域允许客户端向服务器传递关于请求或然有关客户机的增大音讯。请求头域可能含有下列字段Accept、Accept-Charset、Accept-Encoding、Accept-Language、Authorization、From、Host、If-Modified-Since、If-Match、If-None-Match、If-Range、If-Range、If-Unmodified-Since、马克斯-Forwards、Proxy-Authorization、Range、Referer、User-Agent。对请求头域的壮大需要通信双方都扶助,即使存在不辅助的呼吁头域,一般将会作为实体头域处理。

优秀的呼吁音信:

GEThttp://class/download.microtool.de:80/somedata.exe
Host:download.microtool.de
Accept:*/*
Pragma:no-cache
Cache-Control:no-cache
Referer:http://class/download.microtool.de/
User-Agent:Mozilla/4.04[en](Win95;I;Nav)
Range:bytes=554554-

上例第一行代表HTTP客户端(只怕是浏览器、下载程序)通过GET方法得到指定URL下的公文。米红的局地代表请求头域的新闻,草地绿的片段代表通用底部分。

Host头域

Host头域指定请求资源的Intenet主机和端口号,必须代表请求url的本来面目服务器或网关的岗位。HTTP/1.1呼吁必须带有主机头域,否则系统会以400状态码再次回到。

Referer头域

Referer头域允许客户端指定请求uri的源资源地址,那足以允许服务器生成回退链表,可用来登陆、优化cache等。他也同意打消的或不当的三番五次由于体贴的目的被追踪。如若请求的uri没有协调的uri地址,Referer无法被发送。如若指定的是一对uri地址,则此地点应该是一个针锋相对地址。

Range头域

Range头域可以请求实体的一个依然八个子范围。例如,

表示头500个字节:bytes=0-499
表示第四个500字节:bytes=500-999
意味着最后500个字节:bytes=-500
意味着500字节今后的限量:bytes=500-
率先个和尾声一个字节:bytes=0-0,-1
还要指定多少个范围:bytes=500-600,601-999

唯独服务器可以忽略此请求头,如若无条件GET包涵Range请求头,响应会以状态码206(PartialContent)重临而不是以200(OK)。

User-Agent头域

User-Agent头域的始末涵盖发出请求的用户新闻。

一呼百应音信

一呼百应音讯的首先行为上面的格式:

HTTP-VersionSPStatus-CodeSPReason-PhraseCRLF
HTTP-Version表示协理的HTTP版本,例如为HTTP/1.1。Status-Code是一个四个数字的结果代码。Reason-布莱顿沙滩se给Status-Code提供一个粗略的公文描述。Status-Code主要用于机器自动识别,Reason-粉咸沙滩se首要用于救助用户知道。Status-Code的率先个数字定义响应的项目,后七个数字没有分类的机能。第三个数字恐怕取5个不等的值:

1xx:音信响应类,表示接到到请求并且两次三番处理
2xx:处理成功响应类,表示动作被成功接到、驾驭和经受
3xx:重定向响应类,为了形成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包括语法错误或许是无法正确履行
5xx:服务端错误,服务器不可能科学履行一个不错的央求

一呼百应头域允许服务器传递不可以放在状态行的附加新闻,那些域主要描述服务器的音讯和Request-URI进一步的音讯。响应头域蕴含Age、Location、Proxy-Authenticate、Public、Retry-After、Server、Vary、Warning、WWW-Authenticate。对响应头域的扩充须要通信双方都辅助,假如存在不协助的响应头域,一般将会作为实体头域处理。

卓绝的响应音信:

HTTP/1.0200OK
Date:Mon,31Dec200104:25:57GMT
Server:Apache/1.3.14(Unix)
Content-type:text/html
Last-modified:Tue,17Apr200106:46:28GMT
Etag:”a030f020ac7c01:1e9f”
Content-length:39725426
Content-range:bytes554554-40279979/40279980
上例第一行代表HTTP服务端响应一个GET方法。奶油色的局部代表响应头域的音信,淡紫的片段代表通用底部分,浅绿灰的一部分代表实体头域的音讯。

Location响应头

Location响应头用于重定向接收者到一个新URI地址。

Server响应头

Server响应头包蕴处理请求的本来面目服务器的软件新闻。此域能包蕴三个产品标识和注释,产品标识一般遵守重点排序。

实体

伸手音信和响应音讯都足以涵盖实体消息,实体音信一般由实体头域和实业组成。实体头域包罗关于实体的原信息,实体头包罗Allow、Content-Base、Content-Encoding、Content-Language、Content-Length、Content-Location、Content-MD5、Content-Range、Content-Type、Etag、Expires、Last-Modified、extension-header。extension-header允许客户端定义新的实业头,可是这个域只怕不只怕未接受方识别。实体能够是一个透过编码的字节流,它的编码方式由Content-Encoding或Content-Type定义,它的尺寸由Content-Length或Content-Range定义。

Content-Type实体头

Content-Type实体头用于向接收方指示实体的介质类型,指定HEAD方法送到接收方的实体介质类型,或GET方法发送的乞请介质类型Content-Range实体头

Content-Range实体头用于指定整个实体中的一有些的插入地点,他也提醒了整套实体的尺寸。在服务器向客户重临一个局部响应,它必须描述响应覆盖的界定和所有实体长度。一般格式:

Content-Range:bytes-unitSPfirst-byte-pos-last-byte-pos/entity-legth
譬如说,传送头500个字节次字段的样式:Content-Range:bytes0-499/1234即使一个http新闻包含此节(例如,对范围请求的响应或对一名目繁多范围的重叠请求),Content-Range表示传送的界定,Content-Length表示其实传送的字节数。

Last-modified实体头

Last-modified实体头指定服务器上保留内容的末尾修订时间。

相关文章