使用基本身份validation响应HTTP OPTIONS

我们有一个网站托pipeOffice文件背后的IIS6基本身份validation。

IE有一个用于基本authentication的authentication令牌,用于下载文件。 用户单击“打开”,然后Microsoft Office协议发现在文件所服务的目录上执行HTTP OPTIONS请求。 但是,Office不具有IE执行的身份validation令牌,因此它会再次提示input凭据 。 点击取消将显示您在Office中的文件。

由于我们不是Sharepoint类应用程序,而且我们也没有对OPTIONS进行响应的方式,所以我想用OPTIONS方法回复所有的请求(这是与“Microsoft Office Protocol Discovery”的用户代理“)像一个空的200,如RFC 2616所述:

如果没有响应主体,响应必须包含一个字段值为“0”的内容长度字段。

我倾向于使用200响应的ISAPI筛选器 – 在基本身份validation发生之前。 Windows身份validation或匿名访问不是选项。 有什么替代品我失踪?

在全球范围内拒绝OPTIONS动词的严格方法是否可能? 您可以安装URLScan并将OPTIONS放入[DenyVerbs]configuration中。

我认为你可以使用appcmd.exe禁用WebDAV的网站。 你可以创build一个单独的网站来保存文件,并禁用它的WebDAV? 这不应该影响在同一台服务器上运行的任何Sharepoint站点。

JR

有点太长的评论,所以我会滥用一个答案。 事实上,这不适用于你的问题,我不认为这种行为会给你带来麻烦,只是为了确保你知道这一点。

另一种方式是, 在Office文档中单击URL时 ,Office(2007)首先尝试确定该URL的作用。 如果由于访问者(即Office)未被授权而导致某些301redirect到login页面,则Office实际上将忽略原始URL。 相反,它会在默认浏览器中打开301 URL,这并不总是IE浏览器。

即使他们已经有了默认的浏览器运行和授权,这也可能引导用户login页面。 当点击的URL在301 URL的某个GET参数中仍然可用时,如login?goto=original-url ,这是一个小麻烦。 但是,如果原始URL存储在某个会话中(Office保存Cookie,而不是浏览器),则用户甚至会卡在login页面上,因为Web服务器不知道要在哪个页面显示login…

我只testing过使用Office 2007,当时使用下面的用户代理来隐藏对Apache服务器的请求:

  Mozilla / 4.0(兼容; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0 [...]) 

所以我认为Office 2007实际上使用IE本身来执行请求。 我也注意到Office 2007可以从IE访问cookie。 例如:当用户被授权使用IE浏览器(使用cookie;我没有使用基本身份validationtesting),则Office不会收到301redirect到login页面。 所以,当Office做出有趣的请求时,它会将cookie从IE传递到服务器。 它也可能将任何收到的cookies传回给IE(我没有testing过)。

(感谢您的知识库文章链接!)

也许,你应该validation你的iis6configuration。

在网站configuration – >主目录 – >configuration – >映射您是否有映射到.doc扩展名。

另一件事:网站configuration – >主目录 – >configuration – >映射 – >选项:启用会话状态选项,它是主动?

另一件事:你在应用程序池中使用更多的“工作人员”? (不要使用多个) – 应用程序池 – >属性 – >性能 – > web garden最大工作人数 – >将其设置为“1”

有时候,如果它有多个工作进程,“auth”可能会“丢失”