Использование расположения содержимого в заголовке ответа HTTP - PullRequest
119 голосов
/ 18 июня 2009

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

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

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

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

Ответы [ 6 ]

82 голосов
/ 18 июня 2009

Обратите внимание, что 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) для деталей.

23 голосов
/ 18 июня 2009

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

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

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

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

6 голосов
/ 01 марта 2013

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

4 голосов
/ 06 марта 2014

Для пользователей 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());
2 голосов
/ 18 июня 2009

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

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

0 голосов
/ 27 июня 2017

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

...