HTTP消息头

一、HTTP消息头

1、通用信息头
即能用于请求消息中,也能用于响应信息中,但与被传输的实体内容没有关系的信息头,如Data、Pragma
主要:Cache-Control、Connection、Data、Pragma、Trailer、Transfer-Encoding、Upgrade

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表示消息发送的时间,时间的描述格式由rfc822定义。Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。
Pragma用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache- Control:no-cache相同。

2、请求头
用于在请求消息中向服务器传递附加信息,主要包括客户机可以接受的数据类型,压缩方法,语言,以及客户计算机上保留的Cookie信息和发出该请求的超链接源地址等
主要:Accept、Accept-Encoding、Accept-Language、Host、User-Agent、Referer

Accept:浏览器可接受的MIME类型。
Accept-Charset:浏览器可接受的字符集。
Accept-Encoding:浏览器能够进行解码的数据编码方式如gzip。Servlet能够向支持gzip的浏览器返回经gzip编码的HTML页面。这可以减少5到10倍的下载时间。
Accept-Language:浏览器所希望的语言种类,当服务器能够提供一种以上的语言版本时要用到。
Host:初始URL中的主机和端口。
User-Agent:浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。
Referer:包含一个URL,用户从该URL代表的页面出发访问当前请求的页面。

 

3、响应头
用于在响应消息中向客户端传递附加信息,包括服务程序的名称,要求客户端进行认证的方式,请求的资源已移动到新地址等
主要:Location、Server、WWW-Authenticate(认证头)

Authorization:授权信息,通常出现在对服务器发送的WWW - Authenticate头的应答中。
Location:重定向接收者到一个新URI地址。
Server:包含处理请求的原始服务器的软件信息。此域能包含多个产品标识和注释,产品标识一般按照重要性排序。

 

4、实体头
用做实体内容的元信息,描述了实体内容的属性,包括实体信息的类型,长度,压缩方法,最后一次修改的时间和数据的有效期等
主要:Content-Encoding、Content-Language、Content-Length、Content-Location、Content-Type

 

5、扩展头
主要:Refresh、Content-Disposition

二、一些例子

1、Content-Type的作用
该实体头的作用是让服务器告诉浏览器它发送的数据属于什么文件类型。
如当Content-Type的值设置为text/html和text/plain时,前者会让浏览器把接收到的实体内容以HTML格式解析,后者会让浏览器以普通文本解析.

 

2、Content-Disposition的作用
当Content-Type的类型为要下载的类型时,这个信息头会告诉浏览器这个文件的名字和类型。
response.setHeader("Content-Type","video/x-msvideo");
response.setHeader("Content-Disposition", "attachment;filename=aaa.doc");
Content-Disposition中指定的类型是文件的扩展名,并且弹出的下载对话框中的文件类型图片是按照文件的扩展名显示的,点保存后,文件以filename的值命名,保存类型以Content中设置的为准。在设置Content-Disposition头字段之前一定要设置Content-Type头字段。

 

3、Authorization头的作用
Authorization的作用是当客户端访问受口令保护时,服务器端会发送401状态码和WWW-Authenticate响应头,要求客户机使用Authorization来应答。
response.setStatus(401);
response.setHeader("WWW-Authenticate", "Basic realm=\"Tomcat Manager Application\"");

 

更多详细头信息详解请参看原帖:

http://blog.csdn.net/lgl125/article/details/7234122

http://www.cnblogs.com/li0803/archive/2008/11/04/1324747.html

http://blog.csdn.net/kfanning/article/details/6062118

时间: 2024-11-15 08:13:31

HTTP消息头的相关文章

c语言-C语言实现封包解包,有一个消息由标识位,消息头,消息体和校验码组成,如何用C实现对它的封包和解包?

问题描述 C语言实现封包解包,有一个消息由标识位,消息头,消息体和校验码组成,如何用C实现对它的封包和解包? 有一个消息由标识位,消息头,消息体和校验码组成,如何用C实现对它的封包和解包? 解决方案 直接定义成结构体 解决方案二: 定义结构体,然后里面用不同字段定义标识位,消息头,消息体,校验码等 解决方案三: 是呀,如果都是按字节来分的,定位为结构体是一个好方法.

在流模式下利用消息头传输带外信息

WCF为传输层实现数据流在客户和服务之间进行传输提供了很好的支持,不过 在使用这种方式时,我们必须遵循相应的约定.WCF服务在启动时会首先检查操 作契约是否符合这种规范.因为通常模式下我们不能简单地在客户中使用特定的 流,如我们在传输文件时,我们目的是要得到文件对象,而不是流对象.因为我 们使用了不同类型的文件(如:*.doc,*.exe等),那么在另一端我们应该能够 重现这种类型,不过由于使用流传输带来很好的性能,于是我们想在文件传输中 使用这种流模式.那么就得附加相应的文件信息给异端,以便重

Java网络编程从入门到精通(23):HTTP消息头字段

一.通用头字段 1.Connection 这个字段只在HTTP1.1协议中存在.它决定了客户端和服务器进行了一次会话后,服务器是否立即关闭网络连接.在客户端最直接的表现是使用read方法(readLine方法也是一样)读完客户端请求的Web资源后,是否立即返回-1(readLine返回null).Connection有两个值:Close和Keep-Alive.当使用Connection:Close时,和HTTP1.0协议是一样的,当read方法读完数据时立即返回:而使用Connection:Ke

《WCF技术内幕》29:第2部分_第5章_消息:使用消息头(下)

WS-Addressing 和MessageHeaders类型 在前面"MessageHeader类型"一节,我们已经学习了使用 MessageHeader表 一个WS-Addressing终结点.我们会很少手动编写代码来使用一个MessageHeader 去表示WS- Addressing终结点,因为MessageHeaders类型定义了几个表示一个终 结点引用的属性.换句话说,MessageHeaders定义了几个可以增加.修改和删除 WS-Addressing消息头块的方法,并且

《WCF技术内幕》28:第2部分_第5章_消息:使用消息头(中)

MessageHeaders类型 因为SOAP消息可能包含很多消息头块,所以在一个Message类型里,我们需要 一种表示一组消息头块对象的方法.MessageHeaders就是这个作用,并且它定义 了一个MessageHeaders 类型的只读属性Headers.Headers属性是我们在Message 里增加.修改.查询和移除MessageHeader的主要方式.在某种意义上,本节主 要是讲解MessageHeaders类型,以及可以应用到Message类型的Headers属性上的 所有信息

《WCF技术内幕》27:第2部分_第5章_消息:使用消息头(上)

使用消息头 正如你在第二章里看到的一样,消息头块被SOAP消息基础结构用来表示地址 .路由和安全信息.因为WCF也是一个完全支持SOAP的消息处理基础结构,它包 含一些创建.序列化和分析SOAP消息头块的工具.记住Message类型是一个 SOAP 消息的CLR抽象,它定义的成员允许WCF基础结构使用发送或接受到的消息头块. Message 类型的Headers属性提供了这个功能.和WCF里其它关键的类型一样,使 用Headers属性需要我在WCF API里与其它类型交互,即MessageHea

浅析HTTP消息头网页缓存控制以及header常用指令介绍

本篇文章是对HTTP消息头网页缓存控制以及header常用指令进行了详细的分析介绍,需要的朋友参考下   网页的缓存是由HTTP消息头中的"Cache-control"来控制的,常见的取值有private.no-cache.max-age.must-revalidate等,默认为private.其作用根据不同的重新浏览方式分为以下几种情况:(1) 打开新窗口值为private.no-cache.must-revalidate,那么打开新窗口访问时都会重新访问服务器. 而如果指定了max

深入理解HTTP消息头

 转载自:[http://www.php-oa.com] (一)初识HTTP消息头 但凡搞WEB开发的人都离不开HTTP(超文本传输协议),而要了解HTTP,除了HTML本身以外,还有一部分不可忽视的就是HTTP消息头. 做 过Socket编程的人都知道,当我们设计一个通信协议时,"消息头/消息体"的分割方式是很常用的,消息头告诉对方这个消息是干什么的,消息体告诉对方 怎么干.HTTP传输的消息也是这样规定的,每一个HTTP包都分为HTTP头和HTTP体两部分,后者是可选的,而前者是必

请求-C# 通过带消息头的soap数据格式,如何访问webserver接口

问题描述 C# 通过带消息头的soap数据格式,如何访问webserver接口 , 这个是提供的soap请求格式. 解决方案 http://bbs.csdn.net/topics/390170521

SpringMVC返回json是设置编辑等消息头,消息头信息介绍(respone.setHeader,这个从网上获取)

1.  SpringMVC中设置消息头,例子如下: @RequestMapping(value="/hasOperatePrivilege") @ResponseBody public Map<String, Object> hasOperatePrivilege(HttpServletRequest request,          HttpServletResponse response,String websiteId) {    Map<String,Obj