超文本传输协议

超文本传输协议

HTTP/1.1协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:

GET

向指定的资源发出「顯示」请求。使用GET方法應該只用在讀取資料,而不应当被用于产生「副作用」的操作中,例如在网络应用程序中。其中一个原因是GET可能会被網路爬蟲等随意访问。参见安全方法。浏览器直接发出的GET只能由一个url触发。GET上要在url之外带一些参数就只能依靠url上附带querystring。

HEAD

與GET方法一樣,都是向服务器发出指定资源的请求。只不过服务器將不傳回資源的本文部份。它的好處在於,使用这個方法可以在不必传输全部内容的情况下,就可以获取其中「關於該資源的元資訊(或稱元資料)」。

POST

向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传檔案)。数据被包含在请求本文中。這個請求可能会建立新的资源或修改現有资源,或二者皆有。每次提交,表单的数据被浏览器用编码到HTTP请求的body里。浏览器发出的POST请求的body主要有两种格式,一种是application/x-www-form-urlencoded用来传输简单的数据,大概就是"key1=value1&key2=value2"这样的格式。另外一种是传文件,会采用multipart/form-data格式。采用后者是因为application/x-www-form-urlencoded的编码方式对于文件这种二进制的数据非常低效。

PUT

向指定资源位置上传其最新内容。

DELETE

请求服务器删除Request-URI所标识的资源。

TRACE

回显服务器收到的请求,主要用于测试或诊断。

OPTIONS

這個方法可使服务器傳回該资源所支持的所有HTTP请求方法。用'*'來代替資源名稱,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常運作。

CONNECT

HTTP/1.1协议中预留给能够将连接改为隧道方式的代理服务器。通常用於SSL加密伺服器的連結(經由非加密的HTTP代理伺服器)。

方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed),当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。

HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当符合下述的方法各自的语义定义。

此外,特定的HTTP服务器还能够扩展自定义的方法。例如:

PATCH(由 RFC 5789 指定的方法)

用于将局部修改应用到资源。

安全方法

编辑

对于GET和HEAD方法而言,除了进行获取资源信息外,这些请求不应当再有其他意义。也就是说,这些方法应当被认为是“安全的”。客户端可能会使用其他“非安全”方法,例如POST,PUT及DELETE,应该以特殊的方式(通常是按钮而不是超链接)告知客户可能的后果(例如一个按钮控制的资金交易),或请求的操作可能是不安全的(例如某个文件将被上传或删除)。

但是,不能想当然地认为服务器在处理某个GET请求时不会产生任何副作用。事实上,很多动态资源会把这作为其特性。这里重要的区别在于用户并没有请求这一副作用,因此不应由用户为这些副作用承担责任。

副作用

编辑

假如在不考虑诸如错误或者过期等问题的情况下,若干次请求的副作用与单次请求相同或者根本没有副作用,那么这些请求方法就能够被视作“冪等(idempotence)”的。GET,HEAD,PUT和DELETE方法都有这样的幂等属性,同样由于根据协议,OPTIONS,TRACE都不应有副作用,因此也理所当然也是幂等的。

假如一个由若干请求组成的请求序列产生的结果,在重复执行这个请求序列或者其中任何一个或多个请求后仍没有发生变化,则这个请求序列便是“幂等”的。但是,可能出现一个由若干请求组成的请求序列是“非幂等”的,即使这个请求序列中所有执行的请求方法都是幂等的。例如,这个请求序列的结果依赖于某个会在下次执行这个序列的过程中被修改的变量。

對照表

编辑

請求方法的屬性

請求方法

RFC

請求有payload body

response有payload body

安全的

冪等的

可快取的

GET

RFC 9110

可选

HEAD

RFC 9110

可选

POST

RFC 9110

PUT

RFC 9110

DELETE

RFC 9110

可选

CONNECT

RFC 9110

可选

OPTIONS

RFC 9110

可选

TRACE

RFC 9110

PATCH

RFC 5789

相关推荐

火影忍者手游段位有什么 段位等级排行介绍
365速发官网

火影忍者手游段位有什么 段位等级排行介绍

📅 06-29 👀 4732
保罗圣夫罗兰品牌介绍
365账号限制投注怎么办

保罗圣夫罗兰品牌介绍

📅 06-27 👀 5229
不同煎饼锅涂层的比较
365账号限制投注怎么办

不同煎饼锅涂层的比较

📅 06-28 👀 8867