У нас есть сервер Apache Subversion, на котором мы храним (помимо прочего) всю нашу документацию. У нас есть много документов Word, Excel, PDF и т.д. в svn, и все наши пользователи используют TortoiseSVN в качестве клиентского интерфейса. Многие из этих пользователей также будут просматривать репозиторий через веб-браузер, которым (к сожалению) часто является Internet Explorer.
Недавно мы начали тестировать Office 2010 (начиная с 2003 г.) и обнаружили, что документы из репозитория открываются по-другому при просмотре с помощью IE. Вместо того, чтобы IE загружал файл и затем отправлял его в соответствующее приложение (после чего это должна быть просто временная копия, хранимая локально), он отправляет URL для документа в приложение. Документ загружается приложением, а затем обрабатывается так, как если бы он был получен с сервера Sharepoint, то есть приложение пытается заблокировать его, а затем автоматически загрузить любые сохраненные изменения обратно на сервер.
Судя по поиску в Google, многие люди хотеть это поведение. Однако мы хотим отключить его - он не соответствует нашим существующим процессам. Как я могу это сделать?
У меня нет особого контроля над клиентскими машинами, поэтому решения, включающие отключение всех подобных функций совместной работы с документами Office для каждого клиента, не то, что я ищу. Кроме того, я не мог найти ничего, что мог бы сделать, кроме как отключить надстройку Office Document Cache Handler в IE. Единственные варианты на стороне клиента, которые могут быть осуществимы, - это те, которые специально отключают эту функцию для нашего именованного сервера, но оставляют ее для других.
Так что остаются решения на стороне сервера. Я предполагаю, что Office видит, что svn-сервер поддерживает WebDAV, и поэтому переходит в рабочий процесс управления документами, подобный Sharepoint. Есть ли способ остановить такую интеграцию, не отключив всю поддержку WebDAV на сервере (при условии, что мы сможем это сделать)? На самом деле мы немного используем автоверсию svn для других целей, так что это обязательная функция. Я нашел обсуждение отключения этой функции, если это на самом деле сервер Sharepoint, но это не так! Мое понимание того, как работают подобные вещи (например, клиент Office, определяющий поддержку WebDAV на сервере), довольно ограничено, поэтому, пожалуйста, объясните подробнее, если можете.
В случае необходимости, настройка сервера:
Apache v2.2.8 и Subversion v1.4.6 в Ubuntu Hardy 8.04.
Решил (наконец). http://support.microsoft.com/kb/838028 объясняет, как Office использует обнаружение протоколов Microsoft Office, чтобы определить, поддерживает ли сервер документов возможности WebDAV. Он отправляет запрос HTTP 1.1 OPTIONS и ожидает ответа 200 OK с подробным описанием доступных функций DAV. Сервер Subversion имеет (ограниченную) поддержку DAV и отвечает как таковую, а затем Office использует его для обратной записи непосредственно на сервер.
Решение, которое мы использовали, заключалось в том, чтобы использовать mod_rewrite на сервере Apache для перехвата этих запросов и отправки ответа 405 Method Not Allowed. Конфигурация перезаписи:
# Intercept Microsoft Office Protocol Discovery
RewriteCond %{REQUEST_METHOD} ^OPTIONS
RewriteCond %{HTTP_USER_AGENT} ^Microsoft\ Office\ Protocol\ Discovery [OR]
RewriteCond %{HTTP_USER_AGENT} ^Microsoft\ Office\ Existence\ Discovery [OR]
RewriteCond %{HTTP_USER_AGENT} ^Microsoft\-WebDAV\-MiniRedir.*$
RewriteRule .* - [R=405,L]
Он перехватывает все запросы метода OPTIONS, поступающие от агентов с именем «Microsoft Office Protocol Discovery», и отправляет обратно 405. Это решение было предложено в первом комментарии к http://rails.nuvvo.com/lesson/2318-dealing-with-microsoft-office-protocol-discovery-in-rails#comments.
Теперь Office пробует несколько запросов OPTIONS, получает отказ от 405, затем отказывается и отключает всю поддержку DAV для этого конкретного сервера, оставляя ее включенной для любых других серверов, с которыми клиенты могут захотеть взаимодействовать.