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

Internet explorer IE无法从SharePoint 2010文档库下载CSV文件,internet-explorer,csv,sharepoint-2010,download,Internet Explorer,Csv,Sharepoint 2010,Download,我在SP2010中开发了一个web应用程序。整个应用程序都是用JavaScript和SPSServices完成的,因为Marine Corp.的客户不希望在他们的环境中进行任何.NET开发。客户希望能够下载Excel电子表格中的所有报告,以便他们可以使用这些报告执行任何操作。因为不可能用JavaScript生成Excel电子表格,所以我提出的解决方法是用JavaScript生成CSV,并将其保存到文档库中,然后将浏览器指向CSV文件进行下载。这很有效。虽然技术上不是很优秀,但客户也不知道有什么更

我在SP2010中开发了一个web应用程序。整个应用程序都是用JavaScript和SPSServices完成的,因为Marine Corp.的客户不希望在他们的环境中进行任何.NET开发。客户希望能够下载Excel电子表格中的所有报告,以便他们可以使用这些报告执行任何操作。因为不可能用JavaScript生成Excel电子表格,所以我提出的解决方法是用JavaScript生成CSV,并将其保存到文档库中,然后将浏览器指向CSV文件进行下载。这很有效。虽然技术上不是很优秀,但客户也不知道有什么更好的。它只是提供了他们想要的:在Excel中打开报告。但前几天,客户表示出口停止工作。我花了大约一天半的时间试图找出问题所在,找到解决方案,所有这些。以下是我注意到的:

浏览器正在将.csv扩展名更改为_csv 在下载对话框中单击“保存”时,浏览器报告[filename]\u 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和文件名以及文件内容。我不得不删除这些项目,因为这是一个海军陆战队的应用程序和数据

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

提前感谢。

您使用的是哪个版本的IE?您是如何生成CSV文件的

问题听起来像这样:

您还可以将内容类型更改为适当的text/csv,以消除MIME嗅探的可能性


你能收集并分享失败场景的Fiddler捕获吗?

因此IE安全惊喜显然存在阻止下载的问题。我通过转到Internet选项>安全>本地Intranet>站点>高级并添加承载SP站点的域来解决这个问题。为了解决IE将.csv更改为_csv的问题,我在IIS管理器中更改了该扩展的MIME类型。所以现在一切都正常了

我使用了IE7,包括兼容模式和不兼容模式,IE9和IE10。所有这些都会受到影响。好吧,有两件事:1更改MIME类型将需要更改服务器端的配置,这是不允许的。2我看到至少有一个响应头指示浏览器不进行MIME嗅探。我们在JS/SPSServices中构建此应用程序的全部原因是,我们基本上获得了SP2010的开箱即用安装,不允许使用自定义配置或.NET代码。Noniff仅对IE8+有意义。您是否已在未安装Excel的客户端PC上重新编程?如果Excel注册的MIME处理程序坏了,你会看到这样的问题……哦,是的,我是如何生成CSV的。我有一个函数,如果你传递一个对象数组,它会返回一个字符串,它的值本质上是一个CSV文件内容。对象的格式为{column1:value1,column2:value2…},因为很难从JS中的字符串变量获取到可下载的文件,所以我必须使用AJAX调用SP web services将字符串内容发送到文档库,然后调用window.openpathtocsvileindoclib。我们没有在没有安装Excel的机器上测试下载CSV。