HTTP的请求方法OPTIONS

转载 2012年03月28日 11:43:56

HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONSGETHEAD、POST、PUT、DELETE、TRACE和CONNECT。

官方定义

OPTIONS方法是用于请求获得由Request-URI标识的资源在请求/响应的通信过程中可以使用的功能选项。通过这个方法,客户端可以在采取具体资源请求之前,决定对该资源采取何种必要措施,或者了解服务器的性能。

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

如果这个OPTIONS请求包含一个正文(有Content-Length或Transfer-Encoding存在),则必须有Content-Type来指定媒体类型。虽然规范里没有定义这种正文的用法,但是HTTP将来的扩展可能会用它来查询服务器上更详细的信息。不支持该扩展的服务器可以忽略该请求正文。

如果该URI是一个星号(“*”),OPTIONS请求将试图应用于服务器,而不是某个指定资源。由于服务器的通信选项通常依赖于资源,所以此“*”请求只能作为“ping”或者“no-op”方法;或者用来测试服务器的性能。例如,用来测试HTTP/1.1代理。

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

得到的200响应应该包含一个头域,指明服务器实现的和适用于该资源的可选特征(如:Allow),可能还包括该规范尚未定义的扩展。如果有响应正文,则应包含关于通信选项的信息。本规范没有定义该正文格式,但可能在HTTO将来的扩展中定义。可以利用内容协商来选择合适的响应格式。如果没有响应正文,响应必须包含Content-Length,并且值为“0”。

请求头的Max-Forwards用来请求特定代理。当代理收到一个允许URI转发的OPTIONS请求,则检查Max-Forwards。如果Max-Forwards值为0,则不能转发该消息;相反,代理会将自己的通信选项去响应。如果Max-Forwards是正整数,代理转发请求的时候会将该值减1。如果请求中没有Max-Forwards,转发的请求也不会有。

简而言之

OPTIONS请求方法的主要用途有两个:

1、获取服务器支持的HTTP请求方法;也是黑客经常使用的方法。

2、用来检查服务器的性能。例如:AJAX进行跨域请求时的预检,需要向另外一个域名的资源发送一个HTTP OPTIONS请求头,用以判断实际发送的请求是否安全。





The DELETE Method

HTTP提供了一个与PUT方法对应的DELETE方法。一个DELETE请求将需要从Web服务器删除的内容指定为请求行中的资源部分。

DELETE方法唯一有趣的地方在于当你接收了一个标识为200 OK的响应的时候,那并不意味着指定的资源已经被删除了。那仅仅说明服务器接收到了删除资源的命令。这一例外允许了出于安全考虑的人为的干预


OPTIONS 方法在跨域请求(CORS)中的应用

原文  http://stylechen.com/options-cors.html OPTIONS 方法比较少见,该方法用于请求服务器告知其支持哪些其他的功能和方法。通过 OPTI...
  • qizhiqq
  • qizhiqq
  • 2017年05月04日 16:28
  • 6239

跨域资源共享(CORS)安全性浅析[内有提及OPTIONS请求发起的条件]

一、背景   提起浏览器的同源策略,大家都很熟悉。不同域的客户端脚本不能读写对方的资源。但是实践中有一些场景需要跨域的读写,所以出现了一些hack的方式来跨域。比如在同域内做一个代理,JSON-P等...
  • likaiwalkman
  • likaiwalkman
  • 2015年08月26日 21:23
  • 1131

HTTP的请求方法OPTIONS

HTTP请求方法并不是只有GET和POST,只是最常用的。据RFC2616标准(现行的HTTP/1.1)得知,通常有以下8种方法:OPTIONS、GET、HEAD、POST、PUT、DELETE、TR...
  • leikezhu1981
  • leikezhu1981
  • 2012年03月28日 11:43
  • 101214

由一个“两次请求”引出的Web服务器跨域请求访问问题的解决方案

我们公司的项目都是前后端分离的,上线几个月以来,发现一个很奇怪的问题,每次前端发起请求,通过浏览器的开发者工具都能看到在Network下同一个url有两条请求,第一条请求的Method为OPTIONS...
  • cnhnnyzhy
  • cnhnnyzhy
  • 2016年11月11日 14:05
  • 4057

Java Web 学习笔记之十二:JBoss RestEasy处理跨域OPTIONS请求方式

Jboss restEasy 解决前端浏览器跨域请求问题
  • johnson_moon
  • johnson_moon
  • 2017年08月23日 16:41
  • 616

一个Option请求引发的深度解析

在当前项目中,前端通过POST方式访问后端的REST接口时,发现两条请求记录,一条请求的Request Method为Options,另一条请求的Reuest Method为Post。想要解决这个疑惑...
  • u013761206
  • u013761206
  • 2017年03月29日 10:47
  • 722

OPTIONS 预请求 和 Head 请求

预请求“预请求”要求必须先发送一个 OPTIONS 请求给目的站点,来查明这个跨站请求对于目的站点是不是安全可接受的。这样做,是因为跨站请求可能会对目的站点的数据造成破坏。 当请求具备以下条件,就会被...
  • qq_17612199
  • qq_17612199
  • 2016年07月05日 23:23
  • 2360

AJAX中出现两次请求,OPTIONS请求和GET请求

在项目中发现ajax中出现两次请求,OPTIONS请求和GET请求,得到的数据出错,所以想要去掉OPTIONS请求。...
  • cc1314_
  • cc1314_
  • 2017年10月18日 14:16
  • 941

OPTIONS——SIP学习笔记(七)

SIP方法OPTIONS允许UA查询其它UA和代理服务器的能力。这就允许客户端不必“Ringing”对方,即可发现关于支持的方法、内容类型、扩展和编码等信息。 Request-URI确定OPTIONS...
  • Pillary
  • Pillary
  • 2015年06月07日 17:08
  • 2469

MySQL使用mysqlimport命令导入文本文件

MySQL使用mysqlimport命令导入文本文件 MySQL中,可以使用mysqlimport命令将文本文件导入到MySQL数据库中。基本的语法格式如下: mysqlimport -u r...
  • wendi_0506
  • wendi_0506
  • 2015年07月31日 20:48
  • 3373
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:HTTP的请求方法OPTIONS
举报原因:
原因补充:

(最多只允许输入30个字)