IE无法从SharePoint 2010文档库下载CSV文件

时间:2013-08-12 17:58:18

标签: internet-explorer csv sharepoint-2010 download

我在SP2010中开发了一个网络应用程序。整个应用程序都是用JavaScript与SPServices完成的,因为客户(Marine Corp.)不希望在他们的环境中允许任何.NET开发。客户希望能够在Excel电子表格中下载所有报告,以便他们可以使用它们执行任何操作。由于无法在JavaScript中生成Excel电子表格,因此我提出的解决方法是在JavaScript中生成CSV,并将其保存到文档库,然后将浏览器指向CSV文件以供下载。这非常有效。即使它不是技术上的Excel,客户也不知道更好。它只提供了他们要求的内容:在Excel中打开报告。但是前几天,客户说出口停止了工作。我花了大约一天半的时间试图看出什么是错的,找到了解决方案,所有的爵士乐。这是我注意到的:

  • 浏览器将“.csv”扩展名更改为“_csv”
  • 当您在下载对话框中单击“保存”时,浏览器报告“无法下载[文件名] _csv [重试] [取消]”
  • 使用协议分析器查看SP服务器的响应标头时,SP服务器会在内容处理中为浏览器提供正确的文件名
  • IE的所有版本都存在问题,但在FF中运行良好。尚未对Chrome / Safari进行测试

以下是SP2010服务器的HTTP响应标头:

HTTP/1.1 200 OK
Cache-Control   private,max-age=0
Content-Length  27739
Content-Type    application/octet-stream
Expires Sun, 28 Jul 2013 13:42:43 GMT
Last-Modified   Mon, 12 Aug 2013 13:42:43 GMT
ETag    "{AE0131B1-3C1D-4E24-BB97-D4D0EB8C69F2},20"
Server  Microsoft-IIS/7.5
SPRequestGuid   903d68dc-6f49-4fd8-acbc-2b22c4ee28ef
Set-Cookie  WSS_KeepSessionAuthenticated={cbef9658-700b-421b-87d5-08fbdc520faf}; path=/
X-SharePointHealthScore 0
ResourceTag rt:AE0131B1-3C1D-4E24-BB97-D4D0EB8C69F2@00000000020
X-Content-Type-Options  nosniff
Content-Disposition attachment; filename=test.csv
X-Download-Options  noopen
Public-Extension    http://schemas.microsoft.com/repl-2
Set-Cookie  WSS_KeepSessionAuthenticated={cbef9658-700b-421b-87d5-08fbdc520faf}; path=/
X-Powered-By    ASP.NET
MicrosoftSharePointTeamServices 14.0.0.6029
Date    Mon, 12 Aug 2013 13:42:42 GMT

由于IE似乎是唯一受影响的浏览器,我不确定问题是否与服务器响应有关。但话说回来,我来自LAMP开发背景,因此其中一些标题对我来说很陌生。我希望在互联网上的某个人能够知道这里发生了什么,或者某些东西会给我一些关于可能发生什么变化(显然是一夜之间)或者什么的一些线索问题可能是。

这是一个完整的fiddler捕获,为了安全性删除了URL和文件名,以及文件内容。我删除这些项目,因为它是Marine Corp.的应用程序和数据。

GET http://removed_for_security/Reports/filename.csv HTTP/1.1
Accept: */*
Accept-Language: en-US
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MDDC; InfoPath    .3)
Accept-Encoding: gzip, deflate
Host: sp2010dev
DNT: 1
Connection: Keep-Alive
Cookie: WSS_KeepSessionAuthenticated={cbef9658-700b-421b-87d5-08fbdc520faf}


HTTP/1.1 200 OK
Cache-Control: private,max-age=0
Content-Length: 27739
Content-Type: application/octet-stream
Expires: Sun, 28 Jul 2013 19:48:33 GMT
Last-Modified: Mon, 12 Aug 2013 19:48:33 GMT
ETag: "{AE0131B1-3C1D-4E24-BB97-D4D0EB8C69F2},30"
Server: Microsoft-IIS/7.5
SPRequestGuid: a39fa60c-5b8c-4b8c-bb8c-bc1f72ab0351
Set-Cookie: WSS_KeepSessionAuthenticated={cbef9658-700b-421b-87d5-08fbdc520faf}; path=/
X-SharePointHealthScore: 0
ResourceTag: rt:AE0131B1-3C1D-4E24-BB97-D4D0EB8C69F2@00000000030
X-Content-Type-Options: nosniff
Content-Disposition: attachment; filename=filename.csv
X-Download-Options: noopen
Public-Extension: http://schemas.microsoft.com/repl-2
Set-Cookie: WSS_KeepSessionAuthenticated={cbef9658-700b-421b-87d5-08fbdc520faf}; path=/
X-Powered-By: ASP.NET
MicrosoftSharePointTeamServices: 14.0.0.6029
Date: Mon, 12 Aug 2013 19:48:32 GMT

file_contents

提前致谢。

2 个答案:

答案 0 :(得分:0)

您正在使用哪个版本的IE?你究竟是如何生成CSV文件的?

问题听起来像这样:http://blogs.msdn.com/b/ieinternals/archive/2012/07/16/content-length-and-transfer-encoding-validation-in-ie10-download-manager-couldnt-be-downloaded-retry-cancel.aspx

您也可以将Content-Type更改为正确的类型(“text / csv”),以消除MIME嗅探的可能性。

您可以收集并分享Fiddler对失败场景的捕获吗?

答案 1 :(得分:0)

显然,IE安全(惊喜)阻止下载存在问题。我通过转到Internet Options > Security > Local Intranet > Sites > Advanced并添加托管SP站点的域来解决这个问题。并修复IE将“.csv”更改为“_csv”的问题我在IIS管理器中更改了该扩展的MIME类型。所以现在一切正常,