Можно ли динамически включать / исключать блоки каким-либо образом, используя переменные env или тому подобное? Что-то в строках
<LocationMatch ...>
SetEnvIf X-Requested-With XmlHttpRequest xhr
<If xhr>
SSLVerifyClient none
</If>
<If !xhr>
SSLVerifyClient optional
</If>
</LocationMatch>
В ответ на то, что вы пытаетесь решить, с учетом фрагмента Apache, а не фактического вопроса:
Вы не можете принудительно применить клиентские сертификаты после подтверждения SSL, и уж тем более после проверки заголовков HTTP, поэтому ваша идея невозможна.
Дальше больше, SSLVerifyClient optional
не поддерживается ни одним из основных браузеров и приводит к странным ошибкам подключения SSL.
Единственный способ сделать это на стороне сервера - создать отдельный виртуальный хост, выделенный для запросов XHR.
Однако на стороне клиента вы пробовали xhr.withCredentials = true
. Из памяти он отправляет сертификаты клиента и любые другие данные аутентификации с запросом XHR.
Ты имеешь в виду как это?