HTTP标头内容处理文件名未被遵守

时间:2014-12-11 17:34:25

标签: asp.net google-chrome http-headers content-disposition

我有一个由我的网站(ASP.NET)中的按钮启动的动态生成的文件。

输出直接写在Response中,因为我无法在服务器中创建临时文件(同样,它们会发生冲突,因为所有请求的文件名都相同,但内容根据其他一些数据而有所不同在页面上。)

IE中一切正常。 在Chrome中,它没有。 Chrome使用页面名称(让我们说Default.aspx)作为文件名,无论HTTP标头中是什么。

HTTP标头是:

HTTP/1.1 200 OK
Cache-Control: no-cache
Pragma: no-cache
Transfer-Encoding: chunked
Content-Type: application/vnd.ms-excel
Expires: -1
Server: Microsoft-IIS/8.0
Content-Disposition: : attachment; filename=test.xls
X-AspNet-Version: 4.0.30319
X-SourceFiles: =?UTF-8?B?QzpcVXNlcnNcSWdvci5SaWJlaXJvXERvY3VtZW50c1xURlNcRXN0aW1hdGVzIGFuZCBQcm9qZWN0aW9uc1xXZWJzaXRlXFBFUFdlYlNpdGVcRGF0YVF1ZXJ5XERlZmF1bHQuYXNweA==?=
X-Powered-By: ASP.NET
Date: Thu, 11 Dec 2014 17:05:19 GMT

有关如何强制Chrome使用指定文件名而不是页面名称的任何解决方案?

如果唯一的选择是将用户重定向到带有文件名的URL,那么如果每个人的文件名都相同,你会如何建议解决方案,但每个文件的内容应该是分开的(因为它们不同)请求?

谢谢。

1 个答案:

答案 0 :(得分:3)

Content-Disposition后有两个冒号。我猜你添加了内容处理标题:

Response.Headers.Add("Content-Disposition:", "attachment; filename=test.xls")

增加了额外的冒号。

相关问题