Заголовок HTTP Имя файла Расположение не соблюдается

У меня есть динамически сгенерированный файл, инициированный кнопкой на моем веб-сайте (ASP.NET).

Вывод записывается непосредственно в Ответ, так как я не могу создать временные файлы на сервере (они также могут конфликтовать, потому что имена файлов будут одинаковыми для всех запросов, но содержимое будет отличаться в зависимости от некоторых других данных на странице).

Все отлично работает в 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 ответ

Решение

После Content-Disposition есть два двоеточия. Я полагаю, вы добавили заголовок размещения контента следующим образом:

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

который добавляет дополнительный двоеточие.

Другие вопросы по тегам