13

我正在开发一个网络应用程序。它使用基本身份验证。它必须处理 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

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

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

4

1 回答 1

15

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

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

因此 OPTIONS 可能特定于服务器或可能特定于资源,这取决于您的应用程序。如果您使用跨域资源共享(CORS,例如尝试将 XMLHttpRequest 发送到另一台服务器),它将发送一个 OPTIONS 请求以检查服务器是否需要对特定资源的跨域请求,然后再执行 POST 请求。所以在这种情况下 OPTIONS 应该表现资源特定的。对于 WebDAV,特定于服务器的 OPTIONS 可能就足够了,因为客户端这样做只是为了检查允许的方法(例如,如果支持 WebDAV 方法)。

于 2013-12-28T20:14:57.387 回答