HTTP: Как мне показать Content-Type и Content-Disposition, когда клиент запрашивает диапазон байтов?

StackOverflow https://stackoverflow.com/questions/1401529

  •  05-07-2019
  •  | 
  •  

Вопрос

Вчера я спросил об обслуживании байтовых диапазонов из PHP. Сегодня мой вопрос - как мне установить заголовки Content-Type и Content-Disposition при обслуживании нескольких запрошенных диапазонов байтов? Должен ли я повторять их для каждого диапазона байтов или я должен просто выводить их один раз в начале? Или, может быть, я вообще не должен выводить их, потому что клиент должен уже знать, о чем он спрашивает?

Это было полезно?

Решение

Как правило, заголовки HTTP-ответа должны быть одинаковыми (повторными), если вы возвращаете весь ресурс или только его часть; кроме, конечно, для заголовка Content-Range, который будет меняться.

Помните, что HTTP не имеет состояния, поэтому каждый ответ должен быть полным и иметь возможность стоять самостоятельно. Если вы обслуживаете байтовые диапазоны, вам действительно следует использовать теги сущностей (ETag); так что нет никаких шансов, что клиент сможет запросить и получить два отдельных байтовых диапазона, которые действительно принадлежат разным ревизиям одного и того же ресурса.

Другие советы

Ознакомьтесь с RFC 2616 (в частности, разделы 14.16 и 19.2). Если клиент запрашивает один диапазон байтов, ответ должен содержать один диапазон байтов, а значения заголовков Content-Type и Content-Disposition не изменяют поведение (они должны отражать тип обслуживаемого файла). Однако, если клиент запрашивает несколько диапазонов байтов в одном запросе, ответ должен использовать тип контента «multipart / byteranges». вместо этого, и каждая часть внутри тела определяет свой собственный заголовок Content-Type.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top