Использование контента в заголовке ответа HTTP
Я обнаружил, что следующий код asp.net очень полезен при обслуживании файлов из базы данных:
Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
Это позволяет пользователю сохранить файл на свой компьютер, а затем решить, как его использовать, вместо того, чтобы браузер пытался использовать файл.
Что еще можно сделать с заголовком ответа на содержимое?
Ответы
Ответ 1
Властью в заголовке содержимого является RFC 1806 и RFC 2183. Люди также придумали взлом контента. Важно отметить, что заголовок контента не является частью Стандарт HTTP 1.1.
В стандарте HTTP 1.1 (RFC 2616) также упоминаются возможные побочные эффекты безопасности контента:
15.5 Проблемы с размещением контента
RFC 1806 [35], из которого часто реализовано Content-Disposition
(см. раздел 19.5.1) в HTTP-заголовке, имеет ряд очень серьезные соображения безопасности. Content-Disposition не является частью стандарт HTTP, но поскольку он широко применяются, мы находимся документирования его использования и рисков для реализаторы. См. RFC 2183 [49]
(который обновляет RFC 1806) для деталей.
Обратите внимание, что RFC 6266 заменяет RFC, указанные ниже. Раздел 7 описывает некоторые связанные с этим проблемы безопасности.
Ответ 2
Ну, похоже, что заголовок Content-Disposition изначально был создан для электронной почты, а не из Интернета. (Ссылка на соответствующий RFC.)
Я предполагаю, что веб-браузеры могут отвечать на
Response.AppendHeader("content-disposition", "inline; filename=" + fileName);
при сохранении, но я не уверен.
Ответ 3
Обратитесь к RFC 6266 (Использование поля заголовка Content-Disposition в протоколе передачи гипертекста (HTTP)) http://tools.ietf.org/html/rfc6266
Ответ 4
Для пользователей asp.net платформа .NET предоставляет класс для создания заголовка содержимого:
System.Net.Mime.ContentDisposition
Основное использование:
var cd = new System.Net.Mime.ContentDisposition();
cd.FileName = "myFile.txt";
cd.ModificationDate = DateTime.UtcNow;
cd.Size = 100;
Response.AppendHeader("content-disposition", cd.ToString());
Ответ 5
Этот заголовок определен в RFC 2183, так что это будет лучшее место для начала чтения.
Допустимые значения - это зарегистрированные в уполномоченном ведомстве Интернета (IANA); их реестр значений следует рассматривать как окончательный источник.
Ответ 6
Мысль о том, что эта статья в разделе поддержки Microsoft связана с обсуждением здесь Как поднять диалоговое окно загрузки файла для известного типа mime