Заголовок 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")
который добавляет дополнительный двоеточие.