2013-11-21 3 views
1

Какие заголовки наиболее важны для принудительной загрузки и какие заголовки автоматически заполняются браузерами.php force download headers

Для примера.

header('Content-Description: File Transfer'); 
header('Content-type: application/zip'); 
header('Content-Length: '.sprintf("%u", filesize($zip_out))); 
header('Content-Transfer-Encoding: binary'); 
header('Expires: 0'); 
header('Cache-Control: must-revalidate, post-check=0, pre-check=0'); 
header('Pragma: public'); 
header('Content-Disposition: attachment; filename="'.basename($zip_out).'"'); 

Я опускаю все заголовки, кроме строк 1 и 2, загрузка работает отлично, почему/как?

ответ

3

Content-Disposition: attachment говорит, что ваш браузер является вложением. Таким образом, браузер начнет загружать контент в виде файла.

По RFC 6266:

Если тип расположения соответствует «прикрепление» (регистронезависимо), это указывает на то, что получатель должен предложить пользователю сохранить ответ на местном уровне, а не процесс он нормально (в соответствии со своим носителем ).

Content-type: application/zip говорит ваш браузер, что содержание застегнуло, и обычно делает браузер для загрузки контента в виде файла, даже если Content-Disposition: attachment опущен, потому что это поведение по умолчанию браузера для архивного контента.

Я никогда не видел заголовок Content-Description в любых спецификациях, связанных с HTTP, и я думаю, что это совсем не влияет на загрузку.