it-swarm.com.ru

Использование размещения содержимого в заголовке ответа HTTP

Я обнаружил, что следующий код asp.net очень полезен при обслуживании файлов из базы данных:

Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);

Это позволяет пользователю сохранить файл на своем компьютере и затем решить, как его использовать, а не браузер, пытающийся использовать файл.

Что еще можно сделать с заголовком ответа на размещение контента?

115
Ronnie Overby

Обратите внимание, что RFC 6266 заменяет RFC, указанные ниже. Раздел 7 описывает некоторые связанные с безопасностью проблемы.

Полномочия на заголовок размещения контента - 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) для деталей.

81
Andrew Austin

Что ж, похоже, что заголовок Content-Disposition был изначально создан для электронной почты, а не для Интернета. ( Ссылка на соответствующий RFC .)

Я предполагаю, что веб-браузеры могут реагировать на

Response.AppendHeader("content-disposition", "inline; filename=" + fileName);

при сохранении, но я не уверен.

22
MiffTheFox

См. RFC 6266 (Использование поля заголовка расположения содержимого в протоколе передачи гипертекста (HTTP)) http://tools.ietf.org/html/rfc6266

6
Manish Pai

Для пользователей asp.net .NET Framework предоставляет класс для создания заголовка размещения контента: 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());
4
onof

Этот заголовок определен в RFC 2183 , так что это было бы лучшим местом для начала чтения.

Разрешенные значения - это значения, зарегистрированные в Агентстве по присвоению номеров в Интернете (IANA); их реестр ценностей следует рассматривать как окончательный источник.

2
NickFitz

Мысль, что эта статья KB в разделе поддержки Microsoft связана с обсуждением здесь Как вызвать диалоговое окно загрузки файла для известного типа MIME

0
user824910