超文本传输协议

超文本传输协议

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

相关推荐

成龙属什么_成龙的徒弟
beat365体育亚洲网页版

成龙属什么_成龙的徒弟

📅 07-13 👁️ 7388
爱奇艺怎么更改登录密码 爱奇艺更改登录密码方法【教程】
王者荣耀之红玛瑙攻略
office365ios版本

王者荣耀之红玛瑙攻略

📅 07-13 👁️ 7551
在家学习英语如何自学英语 ☕
beat365体育亚洲网页版

在家学习英语如何自学英语 ☕

📅 07-17 👁️ 7910
花了13年做的“啃屎”游戏,竟能让数十万玩家嗨到天亮
beat365体育亚洲网页版

花了13年做的“啃屎”游戏,竟能让数十万玩家嗨到天亮

📅 07-10 👁️ 8720
北斗手表怎么样
beat365体育亚洲网页版

北斗手表怎么样

📅 07-01 👁️ 3019
苹果手机如何设置闹钟教程
beat365体育亚洲网页版

苹果手机如何设置闹钟教程

📅 07-13 👁️ 8422
开服多久出珍兽宝箱——传奇手游的神秘福利揭秘
office365ios版本

开服多久出珍兽宝箱——传奇手游的神秘福利揭秘

📅 07-09 👁️ 271
北斗手表怎么样
beat365体育亚洲网页版

北斗手表怎么样

📅 07-01 👁️ 3019