Author: Xu FC
Method = token,大小写敏感。
标准 Methods
Method | Description |
---|---|
GET | 获取目标资源 |
HEAD | 应答中的头部与 GET,但应答中不带 body |
POST | 指定资源处理请求中的 payload |
PUT | 请求中的 payload 替换指定资源 |
DELETE | 删除指定资源 |
OPTIONS | 获取目标资源所支持的 method |
CONNECT | Establish a tunnel to the server identified by the target resource. |
TRACE | 使源服务器在应答 body 中原样返回请求 |
RFC: https://tools.ietf.org/html/rfc7231
Methods 分类
- Safe Methods
对资源的访问权限是 read-only 的请求 method,被归类为 safe methods,例如 GET, HEAD, OPTIONS, TRACE。 - Idempotent Methods
多次请求与一次请求所得到的结果相同,被归类为 idempotent method,例如 PUT, DELETE 和 safe methods。 - Cacheable Methods
应答允许缓存的methods,例如 GET, HEAD, POST (大多数实现只支持GET 和 HEAD)。 - 扩展 methods: HTTP 支持 method 扩展,详细请见https://tools.ietf.org/html/rfc7231#section-8.1
GET
- 标准的 GET 请求将获取源服务器上指定资源的副本,即应答中的body,但 GET 请求并不仅限于此,很多实现中, GET 请求也用于传输数据查询数据库记录等。GET 请求中不带有 body, 但 RFC 中并没有强制 GET 请求不能带有 body。
GET / HTTP/1.1
Host: 172.16.77.99
HTTP/1.1 200 OK
Date: Fri, 23 Mar 2018 11:50:14 GMT
Server: Apache/2.2.14 (Win32)
Set-cookie: t=1521805814119777
test: t=1521805814119777
Content-Length: 587
Content-Type: text/html;charset=UTF-8
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html>...</html>
HEAD
- 应答中的头部与 GET 相同,但应答中不带 body,常用于确认资源的有效性、可访问性、最近是否有修改。
- HEAD 请求中不带有 body, 但 RFC 中并未强制要求不带body。
HEAD / HTTP/1.1
Host: aaa
HTTP/1.1 200 OK
Date: Fri, 23 Mar 2018 11:52:39 GMT
Server: Apache/2.2.14 (Win32)
Set-cookie: t=1521805959699233
test: t=1521805959699233
Content-Type: text/html;charset=UTF-8
HEAD / HTTP/1.1
Host: aaa
Range: bytes=-10
HTTP/1.1 206 Partial Content
Date: Tue, 29 May 2018 18:28:03 GMT
Server: Apache/2.2.14 (Win32)
Last-Modified: Sat, 20 Nov 2004 07:16:26 GMT
ETag: "100000000f6f7-2c-3e94b66c2e680"
Accept-Ranges: bytes
Content-Length: 10
Content-Range: bytes 34-43/44
Content-Type: text/html
POST
待补充
PUT
待补充
DETETE
待补充
OPTIONS
- 获取目标资源所支持的 methods,如果 URI 为 * ,则返回的 methods 为服务器支持的 methods,如果不是 * , 则返回的 methods 为该资源支持的 methods。
OPTIONS 请求不带 body。 - Allow:应答中的header,列出指定资源所支持的method
OPTIONS /WebGoat/login.mvc HTTP/1.1
Host: 179.1.1.63:8061
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Allow: GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS, PATCH
Content-Length: 0
Date: Fri, 23 Mar 2018 18:39:50 GMT
CONNECT
待补充
TRACE
- 使源服务器在应答 body 中原样返回请求,一般用于调试。
TRACE / HTTP/1.1
Host: 172.16.77.99
HTTP/1.1 200 OK
Date: Fri, 23 Mar 2018 11:58:11 GMT
Server: Apache/2.2.14 (Win32)
Transfer-Encoding: chunked
Content-Type: message/http
28
TRACE / HTTP/1.1
Host: 172.16.77.99
0