← Cloudflare Pages / pages / configuration
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';