Я запускаю небольшой webapp для нескольких департаментов на работе, что очень мало трафика и не так много пользователей. Он построен поверх Django и использует apache как веб-сервер. У меня есть настроенные письма, чтобы отправлять мне по электронной почте, когда возникают какие-либо ошибки, которые до вчерашнего дня были замечательными - ошибок не было, но иногда пользователи не говорят, когда сталкиваются с проблемами, поэтому он позволяет мне оставаться на вершине вещей.
Вчера у нас появился новый пользователь, и я начал получать тонны писем с ошибками. Он понятия не имел, что что-то не так, поэтому я подумал, что это что-то за кулисами. Когда я смотрел журналы, они являются запросами HTTP OPTIONS, которые используют "Протокол поставщика интернет-публикаций Microsoft Access Access" и "Обнаружение протокола Microsoft Office". Я никогда не слышал об этом до этого момента, но, похоже, это своего рода веб-папки MS/webDAV.
Один из вариантов заключается в том, чтобы выяснить, как он может отключить это и сказать ему, чтобы он прекратил это делать, но я предпочел бы просто отрубить ему голову и сделать что-то вроде того, что Apache просто не передает эти запросы Django. способ, которым это можно обработать?
Я нашел решение, используемое другой картой и перенесенное в Django. Я помещаю это вверху любого представления, которое генерирует HTML со ссылками на файлы .XLS или .DOC:
if request.method == 'OPTIONS':
response = HttpResponse()
response['Allow'] = 'GET, HEAD, POST'
return response
Мне нравится решение Apache лучше, хотя... предполагая, что это не вызывает проблем на стороне Windows.
Опция перезаписи хорошая, "Apache Way", вероятно, больше похож:
<LimitExcept GET POST>
deny from all
</LimitExcept>
или...
<Limit OPTIONS>
deny from all
</Limit>
Как насчет:
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^OPTION
RewriteRule .* - [F]
(с включенным mod_rewrite.)