ОПЦИИ запроса аутентификации

Я занимаюсь разработкой веб-приложения. Он использует обычную аутентификацию. Он должен обрабатывать запросы OPTIONS. Это предварительные запросы веб-браузера, а также запросы поддержки функций от клиентов 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"?

1 ответ

Решение

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

Метод OPTIONS представляет собой запрос информации о доступных параметрах связи в цепочке запрос / ответ, идентифицируемой Request-URI. Этот метод позволяет клиенту определять параметры и / или требования, связанные с ресурсом, или возможности сервера, не предполагая действия ресурса или не инициируя извлечение ресурса.

Таким образом, ОПЦИИ могут быть специфичны для сервера или для ресурса, это зависит от вашего приложения. Если вы используете совместное использование ресурсов из разных источников (CORS, например, пытаетесь отправить запрос XMLHttpRequest на другой сервер), он отправит запрос OPTIONS, чтобы проверить, ожидает ли сервер запросов из разных источников для определенного ресурса, прежде чем выполнять запрос POST. Таким образом, в этом случае OPTIONS должен вести себя в зависимости от ресурса. Для WebDAV может быть достаточно специфических для сервера OPTIONS, потому что клиент делает это только для проверки разрешенных методов (например, если методы WebDAV поддерживаются).

Другие вопросы по тегам