首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何响应HTTP OPTIONS请求?

如何响应HTTP OPTIONS请求?
EN

Stack Overflow用户
提问于 2012-08-13 08:22:18
回答 3查看 70.5K关注 0票数 91

HTTP OPTIONS方法假定用于确定服务器在给定资源上支持哪些其他方法。鉴于此,我有两个问题:

  • 这个响应是什么样子的?我在PublicAllow,甚至Access-Control-Allow-Methods头文件中见过CSV列表的例子。它们都是必需的吗?有什么不同?RFC 2616在这里似乎没有多大帮助。

  • 是否适合用它来列出资源在非REST-API环境中支持的操作?例如,如果我的ConversionController支持动作convert,那么这样的响应是否有意义:

请求:

代码语言:javascript
复制
OPTIONS /conversion HTTP/1.1

响应:

代码语言:javascript
复制
HTTP/1.1 200 OK
...
Allow: CONVERT
...
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-08-13 15:59:49

RFC2616定义了“允许”(http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.14.7)。"Public“不再使用。“访问-控制-允许-方法”在CORS规范中定义(参见http://www.w3.org/TR/cors/)。

票数 23
EN

Stack Overflow用户

发布于 2019-05-04 13:37:00

什么是HTTP OPTIONS请求?

这是一个来自客户端的请求,要求知道服务器将允许哪些HTTP方法,如GETPOST等。

请求

当询问特定资源的选项时,请求可能如下所示:

代码语言:javascript
复制
OPTIONS /index.html HTTP/1.1

或者像这样询问一般的服务器:

代码语言:javascript
复制
OPTIONS * HTTP/1.1

响应

响应将包含一个Allow标头,其中包含允许的方法:

代码语言:javascript
复制
Allow: OPTIONS, GET, HEAD, POST

为什么服务器收到HTTP OPTIONS请求?

API API某些REST API需要它(但如果您正在定义

  • ,您应该知道将其作为“预装”请求发送到服务器,以查看服务器是否理解并发送它以获取有关

的更多信息

如何响应HTTP OPTIONS请求?

  • 您可以使用Allowed标头进行响应,甚至可以在正文中使用document your API进行响应。
  • 您可以使用CORS定义的其他Access-Control-Request-*标头进行响应。
  • 您可以使用405 Method Not Allowed或code进行响应

如何停止获取HTTP OPTIONS请求?

如果它来自浏览器,那么更新你的

  • ,这样它就不会做任何“危险的”事情(比如PUTDELETE,或者使用application/jsonPOST )。仅执行simple requests.

另请参阅

票数 14
EN

Stack Overflow用户

发布于 2014-08-21 14:08:32

回应标题:“如何响应HTTP选项请求?”要回答这个问题,我想知道您为什么要响应OPTIONS请求?谁/什么在向您发送OPTIONS请求,为什么?Many public servers respond with some form of "error" or "not allowed" (500501405)。因此,除非您处于特定情况下,即您的客户端将合理地发送OPTIONS请求并期望返回有用/有意义的信息(例如,WebDAV、CORS),否则您可能希望这样回应:“不要这样做。”

对于您提出的关于"OPTIONS /conversion HTTP/1.1“请求的问题:除非您知道服务器上有某个客户端,该客户端将向"/conversion”发送OPTIONS请求,并期望得到带有"Allow: CONVERT“的响应,否则答案是否定的:这样响应是没有意义的。我认为大多数支持选项并以"Allow“响应的实现都使用标准的HTTP方法进行响应。

Here's a great article on the topic

摘要: OPTIONS马上就会出问题,因为它不支持缓存。替代方案:服务器范围的元数据:尝试well-known URI's。特定于资源:尝试在其响应上使用Link header,或者在该资源的表示格式中使用链接。

最后,如果您想要的是服务描述,可以看看WADLRSDL

编辑:

dotnetguy在下面的评论中提出了一个很好的观点:在某些情况下(例如CORS),选项无疑是有价值的;我当然不是有意要提出相反的建议。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11926908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档