使用基本身份验证响应 HTTP OPTIONS

使用基本身份验证响应 HTTP OPTIONS

我们有一个网站,通过 IIS6 基本身份验证来托管 Office 文档。

IE 具有用于基本身份验证的身份验证令牌,它出示该令牌来下载文件。用户单击“打开”,然后 Microsoft Office 协议发现对文件提供的目录执行 HTTP OPTIONS 请求。但是,Office 没有 IE 拥有的身份验证令牌,因此它再次提示输入凭证。点击“取消”将会在 Office 中显示该文件。

由于我们不是类似 Sharepoint 的应用程序,并且我们没有办法响应 OPTIONS,因此我想用 OPTIONS 方法回复所有请求(使用“Microsoft Office Protocol Discovery”的用户代理发送),例如空的 200,因为 RFC 2616状态:

如果没有包含响应主体,则响应必须包含一个 Content-Length 字段,其字段值为“0”。

我倾向于使用 ISAPI 过滤器,它在基本身份验证发生之前响应 200 -。Windows 身份验证或匿名访问不是选项。我是否遗漏了其他替代方案?

答案1

是否可以采用严苛的方法,在 IIS 中全局拒绝 OPTIONS 动词?您可以安装URL扫描并把选项在里面[否认动词]配置。

答案2

我认为您可以使用 appcmd.exe 为网站禁用 WebDAV。您可以创建一个单独的网站来保存文档并在其上禁用 WebDAV 吗?这不会影响在同一服务器上运行的任何 Sharepoint 网站。

JR

答案3

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

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

即使用户已经运行并授权了默认浏览器,这也可能会将用户引导至登录页面。当所点击的 URL 仍然可用于 301 URL 的某些 GET 参数(例如)时,这只会造成轻微的麻烦。login?goto=original-url但是,如果原始 URL 存储在某个会话中(Office 会保存该会话的 cookie,而不是浏览器),则用户甚至会卡在登录页面上,因为 Web 服务器不知道在额外登录后要显示哪个页面...

我仅使用 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;我尚未使用基本身份验证进行测试)时,Office 不会收到 301 重定向到登录页面。因此,当 Office 发出奇怪的请求时,它会将来自 IE 的 cookie 传递到服务器。它还可能将任何收到的 cookie 传递回 IE(我尚未对此进行测试)。

(感谢提供该知识库文章的链接!)

答案4

也许,您应该验证您的 iis6 配置。

在网站配置->主目录->配置->映射中,您是否有到.doc 扩展名的映射。

另一件事:网站配置->主目录->配置->映射->选项:启用会话状态选项,它是否处于活动状态?

另一件事:您在应用程序池中使用了更多的“工作者”吗?(不要使用多个) - 应用程序池->属性->性能-> Web 花园最大工作者数量->将其设置为“1”

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

相关内容