【问题标题】:IE unable to download CSV files from SharePoint 2010 document libraryIE 无法从 SharePoint 2010 文档库下载 CSV 文件
【发布时间】:2013-08-12 17:58:18
【问题描述】:

我在 SP2010 中开发了一个网络应用程序。整个应用程序是用带有 SPServices 的 JavaScript 完成的,因为客户(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

提前致谢。

【问题讨论】:

    标签: internet-explorer csv sharepoint-2010 download


    【解决方案1】:

    您使用的是哪个版本的 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 捕获的失败场景?

    【讨论】:

    • 我使用的是 IE 7(有和没有兼容模式)、IE 9 和 IE 10。都受影响。
    • 嗯,有两件事:1) 更改 MIME 类型将需要更改服务器端的配置,我们不允许这样做。 2) 我看到至少一个响应标头指示浏览器不要进行 MIME 嗅探。
    • 我们在 JS/SPServices 中构建这个应用程序的全部原因是因为我们基本上获得了一个开箱即用的 SP2010 安装程序,NO 自定义配置或允许 .NET 代码。
    • Noniff 只对 IE8+ 有意义。您是否设法在未安装 Excel 的客户端 PC 上重现此问题?如果 Excel 注册的 MIME 处理程序损坏,您会看到这样的问题...
    • 哦,是的,我如何生成 CSV。我有一个函数,如果你传递一个对象数组,它会返回一个字符串,其值本质上是一个 CSV 文件内容。对象的格式为{column1:value1, column2:value2...} 由于很难从 JS 中的字符串变量获取可下载文件,我必须使用 AJAX 调用 SP Web 服务将字符串内容发送到文档库,然后调用 window.open(pathToCSVFileInDocLib) .我们没有在没有安装 Excel 的机器上测试下载 CSV。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-06-01
      • 2011-12-04
      • 2016-02-20
      • 1970-01-01
      • 2012-12-21
      • 1970-01-01
      • 1970-01-01
      • 2017-07-28
      • 1970-01-01
      相关资源
      最近更新 更多