INTEGRITY Документация

Headers

Пользовательские заголовки

Заголовки ответа по умолчанию, которые передаются в ответах со статическими ресурсами, можно переопределить, удалить или дополнить, создав обычный текстовый файл с именем _headers без расширения файла, в директории статических ресурсов вашего проекта. Сам этот файл не будет обслуживаться как статический ресурс, а будет обработан Cloudflare Pages, и его правила будут применяться к ответам со статическими ресурсами.

Если вы используете фреймворк, у вас часто будет каталог с именем public/ или static/, и обычно содержит готовые к развёртыванию ресурсы, такие как favicon, robots.txt файлы и манифесты сайта. Эти файлы копируются в итоговый выходной каталог во время сборки, поэтому это идеальное место для написания ваших _headers файле. Если вы не используете фреймворк, _headers файл можно поместить прямо в ваш каталог вывода сборки.

Заголовки, определённые в _headers файле переопределяют то, что Cloudflare отправляет по умолчанию.

Добавить заголовок

Правила заголовков задаются многострочными блоками. Первая строка блока указывает URL или шаблон URL, к которому должны применяться заголовки этого правила. На следующей строке с отступом необходимо указать список имён и значений заголовков:

[url]
  [name]: [value]

Использование абсолютных URL поддерживается, однако учтите, что абсолютные URL должны начинаться с https и указание порта не поддерживается. _headers правила игнорируют порт и протокол входящего запроса при сопоставлении. Например, правило вида https://example.com/path будет сопоставляться с запросами к other://example.com:1234/path.

Можно определить сколько угодно [name]: [value] пар в следующих строках по мере необходимости. Например:

# This is a comment
/secure/page
	X-Frame-Options: DENY
	X-Content-Type-Options: nosniff
	Referrer-Policy: no-referrer

/static/*
	Access-Control-Allow-Origin: *
	X-Robots-Tag: nosnippet

https://myproject.pages.dev/*
	X-Robots-Tag: noindex

Входящий запрос, соответствующий шаблонам URL нескольких правил, наследует заголовки всех этих правил. Используя предыдущий _headers файле к следующим запросам будут применены указанные заголовки:

Request URL Headers
https://custom.domain/secure/page X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer
https://custom.domain/static/image.jpg Access-Control-Allow-Origin: *
X-Robots-Tag: nosnippet
https://myproject.pages.dev/home X-Robots-Tag: noindex
https://myproject.pages.dev/secure/page X-Frame-Options: DENY
X-Content-Type-Options: nosniff
Referrer-Policy: no-referrer
X-Robots-Tag: noindex
https://myproject.pages.dev/static/styles.css Access-Control-Allow-Origin: *
X-Robots-Tag: nosnippet, noindex

Вы можете задать до 100 правил заголовков. Каждая строка в _headers файл имеет лимит в 2,000 символов. Вся строка, включая пробелы, имя заголовка и значение, учитывается в этом лимите.

Если заголовок применяется дважды в _headers файле значения объединяются через запятую.

Отсоединить заголовок

Вы можете убрать заголовок по умолчанию или заголовок, добавленный более общим правилом. Для этого добавьте перед именем заголовка восклицательный знак и пробел (! ).

/*
  Content-Security-Policy: default-src 'self';

/*.jpg
  ! Content-Security-Policy

Соответствие пути

Те же функции сопоставления URL, которые _redirects предлагает, также доступно для _headers файле. Учтите, однако, что редиректы применяются раньше заголовков, поэтому если запрос подпадает и под редирект, и под заголовок, приоритет получает редирект.

Splats

При сопоставлении splat-паттерн, обозначаемый звездочкой (*) жадно соответствует всем символам. В URL можно указать только один splat.

На совпавшее значение можно ссылаться в значении заголовка как на :splat заполнитель.

Заполнители

Плейсхолдер можно определить с помощью :placeholder_name. Двоеточие (:) с последующей буквой обозначает начало плейсхолдера, и имя плейсхолдера после неё должно состоять из буквенно-цифровых символов и символов подчёркивания (:[A-Za-z]\w*). На каждый именованный заполнитель можно ссылаться только один раз. Заполнители соответствуют всем символам, кроме разделителя, которым в составе хоста является точка (.) или косую черту (/) и может быть только косой чертой (/) если она является частью пути.

Аналогично, совпавшее значение можно использовать в значениях заголовков с помощью :placeholder_name.

/movies/:title
  x-movie-name: You are watching ":title"

Примеры

Cross-Origin Resource Sharing (CORS)

Чтобы разрешить другим доменам получать все статические ресурсы проекта Pages, добавьте следующее в _headers файле:

/*
  Access-Control-Allow-Origin: *

Это применяет Access-Control-Allow-Origin заголовок к любому входящему URL-адресу. Чтобы ограничить область действия, вы можете задать шаблон URL-адреса, который применяется к *.pages.dev поддомен, который затем разрешает доступ только с его staging поддомен ветки:

https://:project.pages.dev/*
	Access-Control-Allow-Origin: https://staging.:project.pages.dev/
Запретите показ URL-адресов workers.dev в результатах поиска

Google и другие поисковые системы часто поддерживают X-Robots-Tag заголовок, чтобы указать своим краулерам, как следует индексировать ваш сайт.

Например, чтобы предотвратить *.pages.dev и *.*.pages.dev URL от индексации, добавьте следующее в _headers файле:

https://:project.pages.dev/*
	X-Robots-Tag: noindex

https://:version.:project.pages.dev/*
	X-Robots-Tag: noindex
Настройка пользовательского поведения кеша браузера

Если у вас есть папка с fingerprinted assets (assets, в имени файла которых есть хеш), можно настроить более агрессивное кеширование в браузере, чтобы повысить производительность для повторных посетителей:

/static/*
  Cache-Control: public, max-age=31556952, immutable
Усиление безопасности приложения

Кликджекинг можно предотвратить, указав браузерам не встраивать ваше приложение в другое приложение (например, с помощью <iframe>) с X-Frame-Options заголовок.

X-Content-Type-Options: nosniff не позволяет браузерам интерпретировать ответ с типом контента, отличным от указанного в Content-Type заголовок.

Referrer-Policy позволяет настроить, сколько информации о том, откуда пришел посетитель, передается при переходе с вашей страницы.

Функции браузера можно отключать в разной степени с помощью Permissions-Policy заголовок (недавно переименованный из Feature-Policy).

Если вам нужен точный контроль над содержимым приложения, Content-Security-Policy заголовок позволяет настроить ряд параметров безопасности, включая элементы управления, аналогичные X-Frame-Options заголовок.

/app/*
  X-Frame-Options: DENY
  X-Content-Type-Options: nosniff
  Referrer-Policy: no-referrer
  Permissions-Policy: document-domain=()
  Content-Security-Policy: script-src 'self'; frame-ancestors 'none';