Управление заголовками ответов HTTP

Продукты
Все продукты

Механизм настраиваемых заголовков ответов HTTP используется для отправки заголовков политики безопасности контента (CSP). Для предотвращения подключения внешних ресурсов, которые нарушают заданные в системе политики безопасности, формируется HTTP заголовок специального вида, который отправляется в ответе сервера на любой запрос.

Важно. Крайне рекомендуется управлять заголовками ответов HTTP с помощью справочника Заголовки ответов HTTP, а не с помощью конфигурационного файла приложения. Подробная информация о том, как перенести уже существующие заголовки из конфигурационного файла в справочник Заголовки ответов HTTP  приведена ниже.

Настроить заголовки ответов HTTP 

  1. Откройте дизайнер системы по кнопке btn_system_designer00001.png в правом верхнем углу приложения.

  2. В группе Настройка системы кликните по ссылке Справочники.

  3. Откройте справочник Заголовки ответов HTTP.

  4. Создайте новый HTTP заголовок. Для этого нажмите кнопку Добавить и заполните обязательные поля: Название заголовкаЗначение заголовка.

    Рис. 1 — Создание нового HTTP заголовка
    scr_chapter_google_synchronization_administrator_workplace.png

    Если в конфигурационном файле приложения и в справочнике заголовков ответов HTTP есть заголовки с одинаковыми именами, то приоритет будут иметь заголовки из конфигурационного файла.

    Заголовки, которые добавлены в справочник не могут быть изменены или удалены. При попытке изменить такой заголовок вы получите соответствующее уведомление.

    Рис. 2 — Ошибка при удалении заголовка HTTP
    scr_chapter_google_synchronization_administrator_workplace.png

По умолчанию заголовок применяется для всех запросов и для всех методов запроса (“*”). При необходимости дополнительно можно переопределить следующие необязательные поля:

  • URL конечной точки — относительный путь URL;
  • Метод запроса — значение метода запроса, допустимые значения: GET, OPTIONS, POST, PUT, DELETE или PATCH;

Результат настройки и включения пользовательских заголовков HTTP можно увидеть в ответе HTTP.

Рис. 3 — Пользовательский заголовок HTTP
scr_chapter_google_synchronization_administrator_workplace.png

В случае наличия в справочнике заголовков с одинаковыми именами нужно учитывать приоритет выбора заголовков:

URL конечной точки Метод запроса Приоритет
/api/HealthCheck/Ping GET 1
/api/HealthCheck/Ping * 2
* POST 3
* * 4

Если в базе заданы заголовки с одинаковыми именами, то при запросе с определенной конечной точки (endpoint) и с определенным методом запроса приоритеты заголовков будут определяться следующим образом:

  1. Первым ищется заголовок, у которого указана именно эта конечная точка и метод запроса.
  2. Затем заголовок, у которого указана та же конечная точка, с которой пришел запрос, и метода запроса равный “*”.
  3. Затем применяется заголовок, у которого конечная точка равна “*” а метод совпадает с методом запроса.
  4. Затем применяется заголовок с конечной точкой равной “*” и с методом запроса равным “*”.

Для включения и отключения заголовков в ответе HTTP используется флаг UseHttpHeaderProvider в конфигурационном файле web.config корневого каталога приложения.

<add key="UseHttpHeaderProvider" value="true" />

Перенести заголовки из конфигурационного файла приложения в справочник 

Для переноса пользовательских заголовков HTTP из конфигурационного файла web.config корневого каталога приложения в справочник необходимо:

  1. В конфигурационном файле найдите секцию <customHeaders>. В ней указаны заголовки в формате:

    <add name="SomeHeaderName" value="SomeHeaderValue" />

    где:

    • name — название заголовка;
    • value — значение заголовка.
       
  2. Все заголовки из данной секции перенесите в справочник Заголовки ответов HTTP, указывая в качестве Название заголовка значение из атрибута name, а в качестве Значение заголовка значение атрибута value. Значения полей URL конечной точки и Метод запроса необходимо оставить со значениями по умолчанию — “*”.

Например, в конфигурационном файле указан заголовок:

<add name="X-Frame-Options" value="SAMEORIGIN" />

В справочник его необходимо перенести следующим образом:

Рис. 4 — Добавление заголовка HTTP в справочник
scr_chapter_google_synchronization_administrator_workplace.png