HTTP Method

HTTP定义了一些安全方法,认为安全(比如GET,HEAD)的时候,一般来说请求是不会产生什么动作,但有些还是由web程序决定;而这个字段的作用是如果使用了一些不安全方法而产生了一些动作,那么运行HTTP应用程序可以告知用户

 

GET

请求报文中请求服务器发送某个资源

 

HEAD

同样请求服务器发送某个资源,但只响应返回头部,不会返回主体部分;这样可以使得客户端在没有获取实际资源的前提下,对资源的头部进行检查,通常应用程序中可以判断

(1)在不获取资源的情况下根据头部了解资源的一些情况

(2)查看响应的状态码,确认需要的对象是否存在

(3)通过头部,确认资源是否已经被修改了

不论怎么样,GET和HEAD对于同一资源的请求,返回的响应报文头部肯定是完全相同的

 

PUT

向服务器写入文档,发送请求报文之后,服务器通过请求的主体部分创建一个由请求报文里的URL命名的一个文档,或者已经存在,就替换内容;由于PUT涉及到用户对服务端内容修改,所以很多Server在执行的时候,会验证身份,密码啥的

请求报文
PUT /lihui.txt HTTP/1.1
Host: www.lihuia.com
Content-Type: text/plain
Content-Length: 12

Hello World!

响应报文
HTTP/1.1 201 Created
Location: http://www.lihuia.com/lihui.txt
Content-Type: text/plain
Content-Length: 31

http://www.lihuia.com/lihui.txt

服务器创建或者更新/lihui.txt,写入磁盘

 

POST

向服务器输送数据,这时候一般可以在服务器端通过PHP接收程序,解析接收的数据,做二次处理;还有发送HTML表单,表单填好了数据,一般发送给服务器之后,服务器会将其发送到其它该去的地方

 

TRACE

客户端发送请求,可能要穿过防火墙,代理和网关之类的应用程序,每个中间节点也许会修改原始HTTP请求,TRACE方法能够让客户端看看最终将请求发送给服务器时候请求的样子;在最后服务器接收之后,会回复一个TRACE响应,并在响应报文主体中包含服务器收到的原始请求报文,这样客户端就明确了在中间节点原始请求报文是否被修改了

客户端
TRACE /lihui.txt HTTP/1.1
Accept: *
Host: www.lihuia.com

中间代理
TRACE /lihui.txt HTTP/1.1
Host: www.lihuia.com
Accept: *
Via: 1.1 proxy3.lilei.com

服务器
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 82

TRACE /lihui.txt HTTP/1.1
Host: www.lihuia.com
Accept: *
Via: 1.1 proxy3.lilei.com

中间代理
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 82
Via: 1.1 proxy3.lilei.com

TRACE /lihui.txt HTTP/1.1
Host: www.lihuia.com
Accept: *
Via: 1.1 proxy3.lilei.com

TRACE请求中不能带主体,主要可以用来诊断,可以查看中间节点程序对请求报文的影响

 

OPTIONS

请求WEB服务器告诉它支持的各种功能;可以询问支持哪些方法,或者对于一些特定的资源支持哪些方法;这样客户端可以不用真实访问那些资源就能得到访问资源的最优方法

请求报文
OPTIONS * HTTP/1.1
Host: www.lihuia.com
Accept: *

请求资源可用的,服务器返回它所支持的用于各种资源的方法

响应报文
HTTP/1.1 200 OK
Allow: GET, POST, PUT, OPTIONS
Context-Length: 0

 

DELETE

请求服务器删除请求的URL所指定的资源,但是不一定会执行,因为HTTP规范允许服务器在不通知客户端的情况下撤销请求,结果不清楚

请求报文
DELETE /lihui.txt HTTP/1.1
Host: www.lihuia.com

响应报文
HTTP/1.1 200 OK
Content-Type: text/plain
Content-Length: 47

Your delete request, will take time to process.

客户端认为资源已经被删除

 

CONNECT

将服务器作为跳板,让服务器去代替用户访问其它,之后将数据原原本本地返回给用户,这样用户就可以访问一些只有服务器才能访问的网站,也就是HTTP代理

CONNECT方法告诉代理服务器想访问www.lihuia.com,需要建立一个TCP连接

请求报文
CONNECT HTTP/1.1
Host: www.lihuia.com
Proxy-Connection: Keep-Alive
Proxy-Authorization: Basic *
Content-Length: 0

响应报文
HTTP/1.1 200 Connection Established

访问想看的服务器
GET / HTTP/1.1
Host: www.lihuia.com
Content-Length: 0

 

扩展方法

HTTP字段可扩展,还有一些常见的扩展方法

LOCK    允许用户锁定资源;比如在编辑的时候锁定资源,以防其他人也在修改
MKCOL   允许用户创建资源
COPY    在服务器上复制资源
MOVE    在服务器上移动资源

发表回复