Можно ли настроить apache на игнорирование запросов OPTIONS? - PullRequest
3 голосов
/ 12 февраля 2010

Я запускаю небольшое веб-приложение для нескольких отделов на работе, у которого очень низкий трафик и не так много пользователей. Он построен на основе Django и использует apache в качестве веб-сервера. У меня есть настройки для отправки мне электронных писем при возникновении любых ошибок, которые до вчерашнего дня были замечательными - ошибок не так много, но иногда пользователи не говорят об этом, когда сталкиваются с проблемами, поэтому это позволяет мне быть в курсе событий .

Вчера у нас появился новый пользователь, и я начал получать множество сообщений об ошибках. Он понятия не имел, что что-то не так, поэтому я подумал, что это что-то за кадром. Когда я посмотрел журналы, это запросы HTTP OPTIONS, использующие «Протокол провайдера интернет-публикации доступа к данным Microsoft» и «Обнаружение протокола Microsoft Office». До этого момента я никогда не слышал об этом, но, похоже, что-то вроде веб-папок MS / webDAV.

Один из вариантов - выяснить, как он может отключить это и сказать ему, чтобы он прекратил это делать, но я бы предпочел просто отрубить голову и сделать что-то вроде apache, просто не передавая эти запросы Джанго. способ, которым это может быть обработано?

Ответы [ 3 ]

2 голосов
/ 13 февраля 2010

Хорошая опция перезаписи, 'Apache Way', вероятно, больше похожа на:

<LimitExcept GET POST>
deny from all
</LimitExcept>

или ...

<Limit OPTIONS>
deny from all
</Limit>
2 голосов
/ 13 февраля 2010

Я нашел решение, используемое другим фреймворком и портированное на Django. Я помещаю это наверху любого представления, которое генерирует HTML со ссылками на файлы .XLS или .DOC:

if request.method == 'OPTIONS':
    response = HttpResponse()
    response['Allow'] = 'GET, HEAD, POST'
    return response

Мне нравится решение Apache, хотя ... при условии, что оно не вызывает проблем со стороны Windows.

1 голос
/ 12 февраля 2010

Как насчет:

RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^OPTION
RewriteRule .* - [F]

(с включенным mod_rewrite.)

...