HTTP响应未使用jQuery Form插件触发文件下载



我正在尝试向客户端发送csv文件。据我所知,我正在设置正确的响应标头(它过去是有效的),浏览器(Chrome、IE)得到了这个:

HTTP/1.1 200 OK
Cache-Control: private, s-maxage=0
Transfer-Encoding: chunked
Content-Type: text/csv; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/8.0
X-AspNetMvc-Version: 5.0
Content-Disposition: attachment; filename="Cameras_Camcorders_Photo_Frames_Binoculars_Telescope_Surveillance_Camera_Accessories_(10-29-2013).xlsm_140217.csv"
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcbGZlcnJhb1xEb2N1bWVudHNcVmlzdWFsIFN0dWRpbyAyMDEzXFByb2plY3RzXFRlbXBsZXhcdHJ1bmtcQ29uU29sLlRlbXBsZXguV2ViQWxwaGEzXEpvYlxSdW5cMTc1YWRlY2UtYzM2MC00ZjMxLWJkM2YtMjk3ZjNkYWMwNTQ2?=
X-Powered-By: ASP.NET
Date: Mon, 17 Feb 2014 13:02:05 GMT

触发文件下载的表单是一个jQuery表单。如果我不使用jQuery表单,下载会正常进行,如果我使用jQuery表格,则不会发生任何事情。

根据您的评论:

我正在使用jQuery Form

从jQuery Form主页:

jQuery表单插件允许您轻松而不引人注目地升级HTML表单以使用AJAX

如果您使用Ajax处理响应,那么您完全绕过了处理HTTP响应的普通浏览器机制(该机制决定它是应该呈现还是保存)。它转而使用JavaScript。

如果您希望ContentDisposition触发对响应的保存操作,则需要使用常规表单提交,而不是Ajax。

最新更新