HTTPs Control

本文详细介绍了HTTP协议的工作原理,包括请求和响应消息的结构、各种头字段的作用及使用场景,如Cache-Control、Date、Range等,并解释了不同状态码的含义。

http协议文件控制信息  

2007-09-05 00:59:10|  分类: Javascript|举报|字号 订阅

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、on ly-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、Max-Forwards、Proxy-Authorization、 Range、Referer、User-Agent。对 请求头扩展要求通讯双方都支持,如果存在不支持 的请求头域,一般将会作为实体 域处理。

典型 的请求消息:

GEThttp://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-Co de是一个三个数字 结果代码。Reason-Phrase给 Status-Co de提供一个简单 文本描述。Status-Co de主要用于机器自动识别,Reason-Phrase主要用于帮助用户理解。 Status-Co de 第一个数字定义响应 类别,后两个数字没有分类 作用。第一个数字可能取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实体 指定服务器上保存内容 最后修订时间。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值