阻止 Microsoft Office 2010 与 Subversion 服务器集成(就像 Sharepoint 一样)

阻止 Microsoft Office 2010 与 Subversion 服务器集成(就像 Sharepoint 一样)

我们有一个 Apache Subversion 服务器,我们将所有文档(以及其他内容)都存储在该服务器上。我们在 svn 中存储了大量 Word、Excel、PDF 等文档,并且所有用户都使用 TortoiseSVN 作为其客户端界面。许多用户还会通过 Web 浏览器浏览存储库,不幸的是,浏览器通常是 Internet Explorer。

最近我们开始试用 Office 2010(来自 2003),发现使用 IE 浏览时,repo 中的文档打开方式不同。IE 不会下载文件然后将其发送到相应的应用程序(之后它应该只是本地存储的临时副本),而是发送网址将文档上传到应用程序。应用程序下载文档,然后将其视为来自 Sharepoint 服务器,即应用程序尝试锁定它,然后自动将任何已保存的更改上传回服务器。

从谷歌搜索来看,似乎很多人此行为。但是,我们想禁用它 - 它不符合我们现有的流程。我该怎么做?

我对客户端机器没有太多的控制权,因此,我并不想采用那种针对每个客户端禁用所有 Office 文档协作功能的解决方案。此外,除了禁用 IE 中的 Office 文档缓存处理程序插件外,我找不到其他办法。唯一可行的客户端选项是专门针对我们指定的服务器禁用此功能,而对其他服务器保留此功能。

因此,剩下的就是服务器端解决方案。我猜 Office 发现 svn 服务器支持 WebDAV,因此转而采用类似 Sharepoint 的文档管理工作流。有没有办法在不禁用服务器上所有 WebDAV 支持的情况下停止这种集成(假设我们可以这样做)?实际上,我们将 svn 的自动版本控制用于其他目的,因此这是一项必需功能。我发现有人讨论如果实际上是 Sharepoint 服务器,则禁用该功能,但事实并非如此!我对这种事情的工作原理(即 Office 客户端识别服务器上的 WebDAV 支持)的理解非常有限,所以如果可以的话,请进一步解释。

如果有关系的话,服务器设置如下:

Ubuntu Hardy 8.04 上的 Apache v2.2.8 和 Subversion v1.4.6。

答案1

(终于)解决了。http://support.microsoft.com/kb/838028解释 Office 如何使用 Microsoft Office Protocol Discovery 来确定文档服务器是否具有 WebDAV 功能。它发送 HTTP 1.1 OPTIONS 请求并期望收到 200 OK 回复,其中详细说明了可用的 DAV 功能。Subversion 服务器具有(有限的)DAV 支持并做出相应回复,然后 Office 使用它直接写回服务器。

我们使用的解决方案是在 Apache 服务器上使用 mod_rewrite 来拦截这些请求并返回 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]

它拦截所有来自名为“Microsoft Office Protocol Discovery”的代理的 OPTIONS 方法请求,并返回 405。此解决方案是由 http://rails.nuvvo.com/lesson/2318-dealing-with-microsoft-office-protocol-discovery-in-rails#comments

现在 Office 尝试了一些 OPTIONS 请求,但被 405 拒绝,然后放弃并关闭对此特定服务器的所有 DAV 支持,但对客户端可能想要与之交互的任何其他服务器保持启用状态。

相关内容