据OPTIONS推测,HTTP 方法用于确定服务器在给定资源上支持的其他方法.鉴于此,我有两个问题:
这种反应是什么样的?我所看到的例子与CSV列出Public,Allow甚至Access-Control-Allow-Methods头.他们都需要吗?有什么不同? RFC 2616在这里似乎没有什么帮助.
使用它来列出资源在非REST-API环境中支持的操作是否合适?例如,如果我ConversionController支持该操作convert,那么这样的响应是否有意义:
请求:
OPTIONS /conversion HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
响应:
HTTP/1.1 200 OK
...
Allow: CONVERT
...
Run Code Online (Sandbox Code Playgroud)
Jul*_*hke 18
RFC 2616定义了"允许"(http://greenbytes.de/tech/webdav/rfc2616.html#rfc.section.14.7)."公共"已不再使用."访问控制允许方法"在CORS规范中定义(参见http://www.w3.org/TR/cors/).
Sur*_*gch 10
这是来自客户端的请求,知道什么HTTP方法服务器将允许一样GET,POST等
要求
当询问特定资源的选项时,请求可能如下所示:
OPTIONS /index.html HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
或者在询问服务器时像这样:
OPTIONS * HTTP/1.1
Run Code Online (Sandbox Code Playgroud)
回复
响应将包含一个Allow带有允许方法的标头:
Allow: OPTIONS, GET, HEAD, POST
Run Code Online (Sandbox Code Playgroud)
Allowed标头进行响应,甚至可以在正文中记录您的 API。Access-Control-Request-*标头进行响应。405 Method Not Allowed或来回应501 Not Implemented。PUT或DELETE或POSTwith application/json)。只执行简单的请求。响应标题:"如何响应HTTP OPTIONS请求?" 要回答这个问题,我想知道您为什么要回复OPTIONS请求?谁/什么向您发送OPTIONS请求,为什么? 许多公共服务器以某种形式的"错误"或"不允许"(500,501,405)进行响应.因此,除非您处于特定情况,即您的客户将合理地发送OPTIONS请求并期望返回有用/有意义的信息(例如,WebDAV,CORS),否则您可能希望回答:"不要这样做."
关于"OPTIONS /转换HTTP/1.1"请求的问题:除非您知道您的服务器有一些客户端,否则客户端会向"/ conversion"发送OPTIONS请求并期望响应"Allow:CONVERT" ,"答案是否定的:那样回答是没有意义的.我认为,多数实现做支持选项和响应"允许",用标准的HTTP方法作出回应.
摘要:OPTIONS立即存在问题,因为它不支持缓存.替代方案:服务器范围的元数据:尝试众所周知的URI.特定于资源:尝试在其响应上使用链接标头,或者在该资源的表示格式中使用链接.
编辑:
dotnetguy在下面的评论中提出了一个很好的观点:OPTIONS在某些情况下无疑是有价值的(例如,CORS); 我当然不打算另有说法.
| 归档时间: |
|
| 查看次数: |
56529 次 |
| 最近记录: |