HTTP深入学习总结(2)——报文

分类: 开发技术 | 作者: 尼莫船长 | 发表于 2013/09/25 没有评论


1,基本概念:
a,报文按照事务(transaction)处理的方向描述,分为流入(inbound)和流出(outbound)报文。
b,按照在网络间流动的状态,分为流向下游(upstream)的报文 clinet->server 一般为request;流向下游(downstream)的报文Server->Client 一般为response
c,报文的格式分成三部分:
起始行(start line)
首部(headers)
主体(entity body)

d,request报文的格式

<method><request-url><version>
<headers>
	
<entity-body>

eg:

GET /index.html HTTP/1.1
Accept: *
Host:www.abc.com

e,response报文格式

<version><status><reason-phrase>
<headers>
	
<entity-body>

eg:

HTTP/1.1 200 ok
content-type:text/pain
content-length:19
		
HI!I'm good boy!

2,常用HTTP的方法
GET:从服务器获取一份文档,无主体
HEAD:从服务器获取文档的首部,无主体
a,在不获取资源的情况下了解资源情况
b,通过查看status code 检查某个资源是否存在。一般返回 200 ok
c,通过查看header检查资源是否改变
eg response:

HTTP/1.1 200 ok
Content-type:text/html
Content-length:2001
(NO Entity body)

POST:向服务器发送 需要处理的数据,有主体
PUT:将请求的主体部分存储在服务器上,有主体
其语义是用请求的主体部分创建一个由请求头命名的文档,如果服务器端有同名文件则替换掉。成功一般返回201
eg request:

PUT /sampleList.txt HTTP/1.1
Host:www.abc.com
Content-type: txt/plain
Context-lenght: 12

Here is a new msg!!

eg response:

HTTP/1.1 201 Created
Location:www.abc.com/smaolList.txt
Content-type:txt/plain
Content-length: 24

http://www.abc.com/sampleList.txt

TRACE:对可能经过proxy服务器传输到服务器的报文进行追踪,无主体
为了防止网关、防火墙等等修改http请求,可以用TRACE方法验证。在行程的最后一站,返回TRACE response会在响应主体中携带原始请求报文。

假设: Client<--->Proxy<--->Firewall<--->Server

eg Clinet发出的request:

TRACE /sampleList.txt HTTP/1.1
Host:www.abc.com
Accept:*

那么最后Proxy返回给Client的 response:

HTTP/1.1 200 ok
Content-type:txt/plain
Content-length: 64
via:1.1 proxy1.public.com

TRACE /sampleList.txt HTTP/1.1
Host:www.abc.com
Accept:*

OPTIONS:决定可以在服务器上执行哪些方法,无主体
请求服务器告知可以支持的方法.
eg req:

OPTIONS * HTTP/1.1
Host:www.abc.com
Accept:*

eg response:

HTTP/1.1 200 ok
Allow:POST, GET,PUT,OPTIONS
Content-length:0

DELETE:从服务器上删除一个文档,无主体
注意:客户端无法保证执行的删除操作一定会成功
eg req:

DELETE /sampleList.txt HTTP/1.1
Host:www.abc.com

eg response:

HTTP/1.1 200 ok
Content-type:txt/plain
Content-length: 20

U delete the sampleList.txt

扩展方法在WebDAV HTTP中定义,如
LOCK:运行用户锁定某个资源,防止在自己修改时其他人操作。
MKCOL:允许用户创建资源
COPY:在服务器上复制资源
MOVE:在服务器移动资源

3,状态码(status code)
HTTP状态码总分为五大类
100~199 信息型状态码
100~101已经定义
200~299 成功状态码
200~206已经定义
300~399 重定向状态码
300~307已经定义
400~499 客户端错误状态码
400~417已经定义
500~599服务器端错误状态码
500~505已经定义

4,首部(headers)
headers和mathod配合工作,它们决定了clinet和server能做的所有事情。可以分成五类:
a,通用首部: client和server共有的
b,请求首部: 只有请求才有的
c,响应首部: 只有响应才有的
d,实体首部: 用于应对实体主体部分的
e,扩展首部: 非标准的,一般由开发者创建的

关于状态码和首部的具体信息参考官方手册。太多了。。。不写了。。。

移动设备快速阅读本文:
  请扫描二维码  -->

"He who hesitates is a damned fool."-Mae West (1892-1980)

» 本文链接地址:http://www.wanghaoyan.com/?p=161 » 英雄不问来路,转载请注明出处,谢谢。
» 您也可以订阅本站:RSS 2.0

« »