HTTP/1.1协议中定义了八种请求方法:GET、POST、HEAD、OPTIONS、PUT、DELETE、TARCE和CONNECT 。最常用的方法是GET和POST。
(1)GET
请求获取由Request-URI(请求URI)指定的资源。注意:GET方法不应有增删改操作和敏感信息,GET可能会被网络爬虫等随意访问。
如果请求消息包含 If-Modified-Since,If-Unmodified-Since,If-Match,If-None-Match 或者If-Range头域,GET的语义将变成“条件(conditionall) GET”。一个条件GET方法会请求满足条件头域的实体。条件GET方法的目的是为了减少不必要的网络使用,这通过允许利用缓存里仍然保鲜的实体而不用多次请求或传输客户端已经拥有的实体来实现的。
如果请求方法包含一个Range头域,那么GET方法就变成“部分Get”(partial GET)方法。一个部分GET会请求实体的一部分。 部分GET方法的目的是为了减少不必要的网络使用,可以允许客户端从服务器获取实体的部分数据,而不需要获取客户端本地已经拥有的部分实体数据。
GET请求的响应是可缓存的(cacheable)如果此响应满足HTTP缓存的要求。
(2)POST
向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立或已有资源的修改。
(3)OPTIONS
返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送’*’的请求来测试服务器的功能性。响应头中包含一个名为“Allow”的头,值是所支持的方法,如“GET, POST”。
(4)HEAD
向服务器索要与GET请求相一致的响应,只返回http头信息,而响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。常用来测试链接的有效性,判断某个资源是否存在。
(5)PUT
向指定资源位置上传其最新内容。PUT和POST极为相似,都是向服务器发送数据,但它们之间有一个重要区别,PUT通常指定了资源的存放位置,而POST则没有,POST的数据存放位置由服务器自己决定。
(6)DELETE
请求服务器删除Request-URI所标识的资源。
(7)TRACE
回显服务器收到的请求,主要用于测试或诊断。
(8)CONNECT
HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
方法名称区分大小写。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed);当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。
HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。