- HTTP协议, 宽松的应用程序,
协议规定头域之间只有一个空格,
但是服务器和客户端应该可以解析多个空格存在的情况
返回码
"101" ; 10.1.2节: 转换协议
"200" ; 10.2.1节: OK
"201" ; 10.2.2节: 创建
"202" ; 10.2.3节: 接受
"203" ; 10.2.4节: 非权威信息
"204" ; 10.2.5节: 无内容
"205" ; 10.2.6节: 重置内容
"206" ; 10.2.7节: 局部内容
"300" ; 10.3.1节: 多样选择
"301" ; 10.3.2节: 永久移动
"302" ; 10.3.3节: 创建
"303" ; 10.3.4节: 观察别的部分
"304" ; 10.3.5节: 只读
"305" ; 10.3.6节: 用户代理
"307" ; 10.3.8节 临时重发
"400" ; 10.4.1节: 坏请求
"401" ; 10.4.2节: 未授权的
"402" ; 10.4.3节: 必要的支付
"403" ; 10.4.4节: 禁用
"404" ; 10.4.5节: 没找到
"405" ; 10.4.6节: 不允许的方式
"406" ; 10.4.7节: 不接受
"407" ; 10.4.8节: 需要代理验证
"408" ; 10.4.9节: 请求超时
"409" ; 10.4.10节; 冲突
"410" ; 10.4.11节: 停止
"411" ; 10.4.12节: 需要的长度
"412" ; 10.4.13节; 预处理失败
"413" ; 10.4.14节: 请求实体太大
"414" ; 10.4.15节; 请求-URI太大
"415" ; 10.4.16节: 不支持的媒体类型
"416" ; 10.4.17节: 请求的范围不满足
"417" ; 10.4.18节: 期望失败
"500" ; 10.5.1节: 服务器内部错误
"501" ; 10.5.2节: 不能实现
"502" ; 10.5.3节: 坏网关
"503" ; 10.5.4节: 服务不能实现
"504" ; 10.5.5节: 网关超时
"505" ; 10.5.6节: HTTP版本不支持
connection
keep-alive | close | upgrade
内容协商
Accept
Accept-Charset
Accept-Language
Accept-Encoding
User-Agent
Accept
Accept: (text/plain; q=0.5), text/html, (text/x-dvi; q=0.8), text/x-c
中文解释: (源代码中没有括号, 括号只是为了说明两个值有关联)
这些类型中, 我最喜欢text/html, text/x-c( 因为假定 q = 1),
如果没有, text/x-dvi 也可以接受,
如果还没有, 只能接受text/plain啦.
Accept-Ranges( 只有这个有s )
bytes
范围请求
Authorization
认证
Cache-Control
Pragma: no-cache // http/1.0
Content-Disposition
attachment; filename="fname.ext"
如果此头域用于一个
Content-Type: application/octet-stream
响应里,那么含义就是用户代理不应该展现响应,但是它应该直接进入一个‘保存响应为…’对话框。
文件名应该括起来
Content-Encoding
gzip
identity, 应该是不变吧??
deflate
Content-Language
Content-Length
除非被禁用, 否则必须有, 貌似由apache负责, PHP无能为力
Content-Location
Content-MD5
body的md5摘要
Content-Range
假定实体共含1234字节,
byte-content-range-spec值的例子如下:
. The first 500 bytes:
bytes 0-499/1234
. The second 500 bytes:
bytes 500-999/1234
. All except for the first 500 bytes:
bytes 500-1233/1234
. The last 500 bytes:
bytes 734-1233/1234
如果此头使用,
需要配合: Content-Length来确定实际传输的数据长度
- 断点续传
由客户端带 Range过来,
- 如果php不修改Content-Range,
那么apache会自己把php输出的信息,
再进行局部截取, 填写Content-Range,
并交给客户端
- php发送header Content-Range的头,
然后发送局部数据.
- 说明:
Content-Length 可能不用处理, apache会处理好的.
Content-Type
Content-type: multipart/byteranges; boundary=分割符(应该不带引号, 随机字符串)
每部分数据会有Content-Type, Content-Range头
Date
Sun, 06 Nov 1994 08:49:37 GMT
Sunday, 06-Nov-94 08:49:37 GMT
Sun Nov 6 08:49:37 1994
必须
这三种都应该可以解析,
但是服务器只能发送第一种
星期: 可简写可全写
月: 必须简写
ETag
比较来自同一资源的不同实体
Expires
例: Thu, 01 Dec 1994 16:00:00 GMT
优先级低于 Cache-Control
From
用户Email: win@ab.com
机器人应该有这个头
Host
必须
If-Match
值为: ETag
条件方法
If-Modified-Since
值为 GMT时间, 见Date, 返回状态为: 304(未变)
条件方法
If-None-Match
Etag
如果不匹配
If-Range
Etag | Date
如果实体没有改变,发送我想要的部分
如果实体改变了,那就把整个新的实体发过来。
If-Unmodified-Since
Date
Last-Modified
Location
完整的URL, 包括http://前缀
Max-Forwards
ttl类似
Pragma
no-cache, *
包含特定执行指令
Proxy-Authenticate
407响应使用
Proxy-Authorization
Range
第一个500字节(字节偏移量0-499,包括0和499):
bytes=0-499
第二个500字节(字节偏移量500-999,包括500和999):
bytes=500-999
最后500字节(字节偏移量9500-9999,包括9500和9999):
bytes=-500 或 bytes=9500-
仅仅第一个和最后一个字节(字节0和9999):
bytes=0-0,-1
关于第二个500字节(字节偏移量500-999,包括500和999)的几种合法但不规范的叙述:
bytes=500-600,601-999
bytes=500-700,601-999
位于: RFC 14.35
Referer
本应是: Referrer, 出现了笔误, 延续至今
这个头, 可以允许服务器为维护而跟踪过时或写错的链接
Retry-After
Server
TE ( transfer-coding )
trailers 客户端愿意接受(chunked)传输编码响应的尾部(trailer)
块传输, 看起来像是传附件
Transfer-Encoding
Upgrade
Upgrade常用头域允许客户端指定它支持什么样的附加传输协议,如果服务器会切换到Upgrade指定的协议如果它觉得合适的话。
如果同意切换协议, 应该返回 101 状态
协议切换
如果使用这个头,
那么connection里面必须有upgrade
User-Agent
Vary
Via
常用头域必须被网关和代理使用
Warning
警告信息
WWW-Authenticate
Basic realm="服务器提示信息"
客户端用头:
Authorization: Basic MjM6MzIz
用户名和密码为: md5( 'user:password' );
必须包含在 401 中, 由服务器发出的头
HTTP RFC 协议 笔记
最新推荐文章于 2025-03-15 20:24:42 发布
作者: 溪水清澈