OPTIONS请求身份验证

IT *_*DAV 11 http file-not-found http-options-method preflight

我正在开发一个Web应用程序.它使用基本身份验证.它必须处理OPTIONS请求.这些是Web浏览器预检请求以及来自WebDAV客户端的功能支持请求.

据我所知,OPTIONS请求必须在不请求身份验证的情况下处理(即我的服务器不应该响应401 Unauthorized),它必须给出如下响应:

OPTIONS https://localhost:44305/path/file.ext HTTP/1.1
Connection: Keep-Alive
User-Agent: some app
Host: localhost:44305

HTTP/1.1 200 OK
Content-Length: 0
DAV: 1, 2, 3
Date: Fri, 27 Dec 2013 17:10:21 GMT
Run Code Online (Sandbox Code Playgroud)

我的问题是:我是否应该始终对OPTIONS请求提供相同的响应,无论URL是什么,还是应该依赖于URL.

例如,如果找不到上例中的file.ext,我应该回复'404 Not found'还是'200 OK'?

Ste*_*ich 14

来自http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html:

OPTIONS方法表示请求有关Request-URI标识的请求/响应链上可用的通信选项的信息.该方法允许客户端确定与资源相关联的选项和/或要求,或服务器的能力,而不暗示资源动作或启动资源检索.

因此OPTIONS可能是特定于服务器的,也可能是特定于资源的,具体取决于您的应用程序.如果您使用跨源资源共享(CORS,例如尝试将XMLHttpRequest发送到另一台服务器),它将发送OPTIONS请求以检查服务器是否在对POST请求进行跟踪之前是否期望对特定资源的跨源请求.因此,在这种情况下,OPTIONS应该具有特定于资源的行为.对于WebDAV,服务器特定的OPTIONS可能就足够了,因为客户端只会检查允许的方法(例如,如果支持WebDAV方法).

  • 谢谢Steffen,这也是我在想的.对不同URL做出不同响应的问题是,攻击者可以使用OPTIONS请求来发现该特定资源支持的服务器内容/ URL和功能.这看起来像是一个安全问题. (4认同)