Заголовки

В этом разделе объединены опции, позволяющие произвести точную настройку заголовков CORS и индивидуальных заголовков.

Что такое заголовки?

Заголовки HTTP позволяют клиенту и серверу отправлять дополнительную информацию с HTTP запросом или ответом. В HTTP-заголовке содержится не чувствительное к регистру название, а затем после (:) непосредственно значение. Пробелы перед значением игнорируются.
Есть несколько основных типов заголовков:
  • Основные заголовки применяется как к запросам, так и к ответам, но не имеет отношения к данным, передаваемым в теле ресурса.
  • Заголовки запроса содержат больше информации о ресурсе, который нужно получить, или о клиенте, запрашивающем ресурс.
  • Заголовки ответа содержат дополнительную информацию об ответе, например его местонахождение, или о сервере, предоставившем его.
  • Заголовки сущности содержат информацию о теле ресурса, например его длину содержимого или тип MIME.
Заголовки CORS (Cross-Origin Resource Sharing) позволяют решить проблему блокировки кросс-доменных запросов браузером при обращении к контенту, размещённому в сети CDN. Например, если это касается шрифтов. Cloudfort предлагает Вам настроить проверку CORS через Ваш личный кабинет.
Основные принципы работы опции «CORS» для услуги «Ускорение сайтов»:
  1. При включенном CORS заголовки Access-Control от ориджина не учитываются ни при каких условиях и удаляются из ответа.
  2. Запрос без заголовка Origin не является кросс-доменным и заголовки Access-Control клиенту не передаются.
  3. Заголовки Access-Control-Request не добавляются ни при каких условиях, т.к. это входящие заголовки запроса, формируемые браузером, как и Origin.
  4. При наличии заголовка Origin его содержимое проверяется на соответствие с заданным пользователем. В случае отсутствия ограничений заголовок Access-Control-Allow-Origin ответа будет содержать «*», в случае наличия ограничений и попадания Origin в список разрешенных Access-Control-Allow-Origin будет содержать http(s?)://${http_origin}, в любом другом случае ответ не будет содержать заголовки группы «Access-Control-__».
  5. Заголовок Access-Control-Expose-Headers добавляется в том случае, если такие заголовки заданы пользователем. По умолчанию мы проставляем разрешение на доступ к Content-Range для работы range-запросов.
  6. Заголовок Access-Control-Allow-Credentials выставляется в соответствии с заданным пользователем.
  7. Заголовки Access-Control-Allow-Methods, Access-Control-Allow-Headers и Access-Control-Max-Age проставляются только в ответе на запрос с методом OPTIONS, который обрабатывается локально и на ориджин не передается.
  8. Заголовок Access-Control-Allow-Methods выставляется равным содержимому заголовка Access-Control-Request-Method в случае его наличия и попадания его содержимого в список простых запросов (GET, HEAD, POST) либо в список, заданный пользователем. Если метод не попадает в список разрешенных, то ответ не будет содержать заголовки группы «Access-Control-__» содержать не будет. В случае отсутствия в запросе заголовка Access-Control-Request-Method заголовок Access-Control-Allow-Methods не выставляется.
  9. Заголовок Access-Control-Allow-Headers выставляется равным содержимому заголовка запроса Access-Control-Request-Headers в случае его наличия и попадания обоих заголовков в список простых (Accept, Accept-Language, Content-Type, Content-Language) либо в список, заданный пользователем. Если хотя бы один заголовок не попадает в список разрешенных, то ответ не будет содержать заголовки группы «Access-Control-__». В случае отсутствия в запросе заголовков Access-Control-Request-Method и Access-Control-Request-Headers заголовок Access-Control-Allow-Headers не выставляется.
  10. Заголовок Access-Control-Max-Age выставляется в соответствии с заданным пользователем, по умолчанию не выставляется.
  11. Дополнительные заголовки ответа, определяемые клиентом, добавляются/переопределяются после отработки модуля CORS и, например, Access-Control-Alow-Origin: «*» в секции заголовков будет добавлен вне зависимости от результатов работы модуля CORS.

Как настроить заголовки в ускорении сайтов?

Шаг 1. Откройте необходимый CDN-ресурс и перейдите во вкладку «Заголовки».
Для изменения настроек работы CORS включите соответствующий свитчер.
Чтобы заголовки Access-Control-Origin и Access-Control-Allow-Credentials учитывались, включите соответствующие свитчеры.
Cookies, сессионность и авторизация несовместимы с кэширующими сервисами ввиду логики своей работы. Однако, если у Вас возникнет необходимость, настройка «Access-Control-Allow-Credentials» позволит Вам выставить соответствующий заголовок Access-Control-Allow-Credentials.
От настроек сервера зависит то, разрешено или запрещено делать preflight-запрос. Если это разрешено, то браузер делает оригинальный запрос и получает ответ сервера. Настройка «Время жизни ответа preflight-запроса» отвечает за время, в течение которого результат ответа на preflight-запрос считается актуальным. Задайте нужное значение в секундах в соответствующей графе (значение по умолчанию - «200»).
Шаг 2. Если свитчер напротив Access-Control-Origin включен, появится доп. настройка «Разрешенные источники».
По умолчанию запросы разрешены для всех источников. Вы можете явно указать, каким источникам разрешено взаимодействовать с сервером. Чтобы сделать это, нажмите на кнопку «+ Добавить», после чего введите доменное имя источника.
Настройка «Заголовки запроса» отвечает за то, какие заголовки запроса модуль CORS будет считать разрешёнными. По умолчанию разрешены заголовки Accept, Accept-Language, Content-Type, Content-Language. Вы можете дополнить этот список, нажав на кнопку «+ Добавить», после чего введите имя заголовка.
Настройка «Методы» отвечает за то, какие методы модуль CORS будет считать разрешёнными. По умолчанию разрешены методы GET, HEAD, POST. Вы можете дополнить этот список, нажав на кнопку «+ Добавить», после чего введите имя заголовка.
Настройка «Заголовки Expose Headers» отвечает за то, какие заголовки Expose Headers (заголовки, доступные API верхнего уровня) модуль CORS будет считать разрешёнными. По умолчанию разрешены заголовки Cache-Control, Content-Language, Content-Type, Expires, Last-Modified, Pragma. Вы можете дополнить этот список, нажав на кнопку «+ Добавить заголовок», после чего введите имя заголовка.
Заголовки HTTP позволяют клиенту и серверу отправлять дополнительную информацию с HTTP запросом или ответом. Чтобы включить настройку, нажмите на соответствующий свитчер.
Вы можете добавить свои HTTP-заголовки. Для этого нажмите на кнопку «+ Добавить», после чего укажите:
  • Направление заголовка. В зависимости от того, кому будет адресован Ваш заголовок, выберите «To origin» (источнику) или «To customer» (пользователю).
  • Название заголовка.
  • Значение заголовка.
Шаг 3. Не забывайте сохранять Ваши настройки каждый раз после того, как изменяете их.