/ Require expr эквивалент в Apache 2.2. 22 для проверки заголовков?

Я использую следующую конфигурацию Apache для проверки наличия определенных заголовков в моих запросах:

<LocationMatch /test-headers/>
    <RequireAll>
        Require expr %{HTTP:header1} == 'abc'
        Require expr %{HTTP:header2} == 'def'
    </RequireAll>
</LocationMatch>

Это отлично работает с Apache 2.3 и более поздними версиями, поскольку "RequireAll" поддерживается в authz_core_module [1].

Есть ли способ добиться того же с Apache 2.2.22?

[1] https://httpd.apache.org/docs/trunk/mod/mod_authz_core.html

0
задан 8 May 2016 в 21:37
1 ответ

Apache 2.2 не понимает, поэтому мы используем RewriteCond. И поскольку RewriteCond не позволяет проводить тестирование на несовпадения, мы сопоставляем сначала желаемый случай (header1 имеет abc, header2 имеет def), и пусть он передать, пометив RewriteRule как [L], "последнее правило, не обрабатывать любые другие соответствующие правила RewriteRules после этого "), а затем RewriteRule, которое соответствует всем остальным случаям и позволяет им сбой через '[F]', "не выполнить запрос".

RewriteCond %{HTTP:header1} =abc
RewriteCond %{HTTP:haeder2} =def
RewriteRule ^/test-headers/.* - [L]
RewriteRule ^/test-headers/.* - [F]

Решение найдено Йоханнесом Шинделином: https://github.com/git/git/commit/f1f2b45be0a2b205fc07758e0f4e9c13e90d34d9

0
ответ дан 24 November 2019 в 06:35

Теги

Похожие вопросы