我正在尝试将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表单,没有任何反应。
答案 0 :(得分:1)
来自您的评论:
我正在使用jQuery Form
从jQuery表单主页:
jQuery Form Plugin允许您轻松且不引人注意地升级HTML表单以使用AJAX
如果您正在使用Ajax处理响应,那么您完全绕过了正常的浏览器机制来处理HTTP响应(它决定是否应该呈现或保存)。它取而代之的是JavaScript。
如果您希望Content-Disposition在响应中触发保存操作,则需要使用常规表单提交而不是Ajax。