В моей дискуссии на форумах Traefik я указывал на тот факт, что это, похоже, ожидаемое поведение для используемой библиотеки . После некоторых экспериментов я пришел к следующему решению:
Пропустить заголовки безопасности по умолчанию и использовать только параметр customResponseHeaders
. Кажется, что они обрабатываются отдельно от упомянутой библиотеки, и их можно объединить, поэтому сначала нужно начать с самых конкретных, а затем добавить общие, например: middlewares = ["service", "default"]
А вот и рефакторингЗаголовки из вопроса:
[http.middlewares.default.headers.customResponseHeaders]
Access-Control-Allow-Origin = "null"
Content-Security-Policy = "default-src 'none';form-action 'none';frame-ancestors 'none';base-uri 'none'"
Feature-Policy = "notifications 'none'; camera 'none'"
Referrer-Policy = "strict-origin"
Server = "home.stoinov.com"
Strict-Transport-Security = "max-age=315360000; includeSubDomains; preload"
X-Content-Type-Options = "nosniff"
X-Frame-Options = "SAMEORIGIN"
X-Xss-Protection = "1; mode=block"
[http.middlewares.service.headers.customResponseHeaders]
Content-Security-Policy = "default-src 'none';script-src 'self' 'unsafe-inline';style-src 'self';img-src 'self'"
Настройка по умолчанию фактически на одну строку короче, чем использование предопределенных заголовков для того же результата.
Один недостаток состоит в том, что на панели мониторинга вы увидитеваши заголовки сгруппированы в верхней части промежуточного программного обеспечения, но фактические заголовки безопасности останутся со своими значениями по умолчанию. Что, честно говоря, могло бы быть плюсом, если бы у нас было имя заголовка и значение.