Установите заголовок HSTS в htaccess, если его еще нет

Я установил HSTS в общий .htaccess, который используется несколькими сайтами.

Header set Strict-Transport-Security "max-age=31536000" env=HTTPS

Но когда сайт уже установил заголовок HSTS из конфигурации виртуального хоста, в ответ добавляются два заголовка HSTS.

Итак, прежде чем я настрою HSTS на .htaccess, как мне проверить, присутствует ли уже заголовок HSTS?


person Sushil    schedule 01.11.2017    source источник


Ответы (3)


С Header set все в порядке. Если бы вы использовали Header add, возникла бы проблема.

добавить : заголовок ответа добавляется к существующему набору заголовков, даже если этот заголовок уже существует. Это может привести к тому, что два (или более) заголовка будут иметь одно и то же имя. Это может привести к непредвиденным последствиям, и в общем случае вместо этого следует использовать set, append или merge.

set : заголовок ответа устанавливается, заменяя любой предыдущий заголовок этим именем. Значение может быть строкой формата.

https://httpd.apache.org/docs/current/en/mod/mod_headers.html

person Croises    schedule 01.11.2017

В качестве альтернативы используйте setifempty

Header always setifempty Strict-Transport-Security "max-age=31536000" env=HTTPS
person Barry Pollard    schedule 01.11.2017
comment
Спасибо, но SetIfEmpty available in 2.4.7 and later, expr=value available in 2.4.10 and later. - person Sushil; 01.11.2017

Как сообщил @Croises, по умолчанию он должен просто перезаписываться, но в моем случае оказалось, что заголовок, заданный конфигурациями виртуального хоста, использовал ключевое слово always, поэтому заголовок, заданный .htaccess, также был добавлен.

Вы также можете использовать setifempty, но в моем случае мой Apache не был последним (поддерживался только для 2.4.7 и выше). Поэтому мне пришлось сделать, как показано ниже, чтобы он работал.

Header always unset Strict-Transport-Security
Header set Strict-Transport-Security "max-age=31536000" env=HTTPS
person Sushil    schedule 01.11.2017