我们最近将Web应用程序迁移到负载平衡的服务器对。该文档使用XML格式从数据库动态构建,并使用application/msword
MIME类型下载。这适用于Chrome,但在IE8和其他IE版本中,文档已下载,但单击页面上的链接时,用户将被重定向到登录屏幕。
在使用Fiddler检查HTTP标头时,似乎服务器发出405 HTTP状态代码(Method not Allowed),负载均衡器切换到备用服务器,该服务器不保存用户的会话详细信息,因此将其注销。为什么仅为IE浏览器发布405状态代码?为什么它会导致负载均衡器切换服务器?
服务器是带有ColdFusion 9的IIS 7.5。
这是在响应数据之前写入的HTTP标头信息。
<cfheader name="Content-Disposition" value='inline; filename="#CreateUUID()#.doc"'>
<cfcontent type='application/msword'>
是否有其他人在使用类似的服务器设置(不一定是ColdFusion或IIS)时遇到过这种情况?虽然Chrome是一种解决方法,但我们的用户可能没有足够的权限来安装非IE浏览器。
答案 0 :(得分:1)
在IIS中添加Microsoft Office MIME类型,但使用“application / vnd.openxmlformats-officedocument.wordprocessingml.document”。这取代了“application / msword”mimetype
以下是办公室mimetypes的完整列表:
http://filext.com/faq/office_mime_types.php
以下是在IIS中添加mimetype的步骤:
http://technet.microsoft.com/en-us/library/cc725608(v=ws.10).aspx
答案 1 :(得分:0)
我似乎通过将Content-Disposition标头从内联修改为附件来解决此问题,以便在一个请求和一个会话中处理整个下载。
<cfheader name="Content-Disposition" value='attachment; filename="#CreateUUID()#.doc"'>