http请求方法

447 阅读3分钟

这是个很基础的问题,面试常问,但是有些也容易被忽略。

http的请求方法目前有9种包括如下,用来指示对资源进行的操作,这些操作可以用一组特征来描述。

本行用来吐槽掘金的这个编辑器 真的功能太少,太难用了。。。。

特征名称: 是否有请求体   成功的响应是否有请求体  安全   幂等   可缓存   html表单支持?

GET                 否                           是                        是       是        是              是

POST              是                           是                         否       否        否             是

PUT                是                           否                         否       是        否             

DELETE          可能                        可能                      否       是        否             否

TRACE           否                            否                         否       是        否             否

HEAD            否                            否                          是       是        是             否

CONNECT     否                            是                          否       否        否             否

OPTIONS      否                            否                           是       是        否            否

PATCH         是                             否                           否       否        否            否

PUT和POST是有区别的,PUT是幂等的可以连续调用多次,POST不是幂等的,如果连续调用多次可能会有副作用,比如,订单被提交多次,如果是修改余额会造成余额出错。

POST比GET要安全,因为POST不可缓存。而且get请求发送的数据是url的一部分。 此处说的安全和上面表格中所说的安全不是同一个概念?

TRACE主要用来测试消息回路是否通畅。

HEAD请求主要用来请求资源的头部,一般用来获得资源的大小,以确定是否要下载该资源,不包含body,即使包含也会被忽略。

OPTIONS方法用于获取目的资源所支持的通信方式的选项。在 CORS 中,可以使用 OPTIONS 方法发起一个预检请求,以检测实际请求是否可以被服务器所接受。预检请求报文中的 Access-Control-Request-Method 首部字段告知服务器实际请求所使用的 HTTP 方法;Access-Control-Request-Headers 首部字段告知服务器实际请求所携带的自定义首部字段。服务器基于从预检请求获得的信息来判断,是否接受接下来的实际请求。