HTTP 协议 POST 请求,为什么会有一个 OPTION?

HTTP 协议 POST 请求,为什么会有一个 OPTION?

正如上面问题所说,当你打开 Chrome 开发工具或者其他抓包工具的时候,会发现一条 POST 请求输出两次,第一次状态显示 OPTION。

一、官方定义

HTTP 协议 POST 请求,为什么会有一个 OPTION?

1.OPTIONS 方法是用于请求获得由 Request-URI 标识的资源在请求/响应的通信过程中可以使用的功能选项。

2.该请求方法的响应不能缓存

3.如果这个 OPTIONS 请求包含一个正文(有 Content-Length 或 Transfer-Encoding 存在),则必须有Content-Type 来指定媒体类型

虽然规范里没有定义这种正文的用法,但是 HTTP 将来的扩展可能会用它来查询服务器上更详细的信息。

3.如果该 URI 是一个星号(“*”),OPTIONS 请求将试图应用于服务器,而不是某个指定资源。

由于服务器的通信选项通常依赖于资源,所以此“”请求只能作为“ping”或者“no-op”方法;或者用来测试服务器的性能。

例如,用来测试 HTTP/1.1 代理。

4.如果该 URI 不是星号,则只能用来获取该资源通信中可用的选项

5.得到的 200 响应应该包含一个头域,指明服务器实现的和适用于该资源的可选特征(如:Allow),可能还包括该规范尚未定义的扩展。

如果有响应正文,则应包含关于通信选项的信息。

可以利用内容协商来选择合适的响应格式。如果没有响应正文,响应必须包含 Content-Length,并且值为“0”。

6.请求头的 Max-Forwards 用来请求特定代理。当代理收到一个允许 URI 转发的 OPTIONS请求,则检查Max-Forwards。

如果 Max-Forwards 值为0,则不能转发该消息;相反,代理会将自己的通信选项去响应。如果Max-Forwards 是正整数,代理转发请求的时候会将该值减1。

如果请求中没有 Max-Forwards,转发的请求也不会有。

通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施

,或者了解服务器的性能

二、主要功能

HTTP 协议 POST 请求,为什么会有一个 OPTION?

根据上面描述,我们可以列举出 OPTION 的主要功能:

其一:获取服务器支持的 HTTP 请求方法;

其二:用来检查服务器的性能。

值得注意的是:其实 HTTP 请求还分为两类:普通请求和简单请求。

三、结论

HTTP 协议 POST 请求,为什么会有一个 OPTION?

那么到这里,大家已经了然于胸了吧!

OPTIONS 请求旨在发送一种“探测”请求以确定针对某个目标地址的请求必须具有怎样的约束(比如应该采用怎样的HTTP方法以及自定义的请求报头),然后根据其约束发送真正的请求。

比如针对“跨域资源”的预检(Preflight)请求采用的 HTTP 方法就是 OPTIONS。

通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能

四、热门文章推荐

1.

2.

3.

HTTP 协议 POST 请求,为什么会有一个 OPTION?


分享到:


相關文章: