1

Тема: Чому RewriteCond не бачить заголовків %{HTTP_X_XSRF_TOKEN}

Хоча я відсилаю на сервер нестандартний HTTP-заголовок HTTP_X_XSRF_TOKEN, але він доходить до PHP як належить (бачу його у виводі print_r($_SERVER)).

Коли я намагаюсь перевірити наявність цього заголовку за допомогою .htaccess

RewriteEngine on
RewriteCond %{HTTP_X_XSRF_TOKEN} .+
RewriteRule . /index.php [PT]

то apache реагує так, ніби його немає. Але він точно є, і браузер показує цей заголовок, і змінна $_SERVER, але по якійсь причині його не бачить лише apache.

Ніхто не в курсі чому?

2

Re: Чому RewriteCond не бачить заголовків %{HTTP_X_XSRF_TOKEN}

http://httpd.apache.org/docs/current/mo … owoverride

3

Re: Чому RewriteCond не бачить заголовків %{HTTP_X_XSRF_TOKEN}

В мене у httpd.conf AllowOverride All, але думаю ця директива не впливає на це.

4

Re: Чому RewriteCond не бачить заголовків %{HTTP_X_XSRF_TOKEN}

Ну чисто припустив, що .htaccess взагалі не працює.
Попробуйте перевірити чи якесь інше простеньке правило в .htaccess буде працювати.

5

Re: Чому RewriteCond не бачить заголовків %{HTTP_X_XSRF_TOKEN}

Як часто це буває - просто прочитавши уважно мануал, можна знайти вирішення своєї проблеми.

Пункт 4 мануала говорить, що використовуючи синтаксис

%{HTTP:header}

можна додавати нестандартні заголовки. Отже вирішення моєї проблеми:

RewriteEngine on
RewriteCond %{HTTP:X-XSRF-TOKEN} .+
RewriteRule . /index.php [PT]
Подякували: 0xDADA11C71

6

Re: Чому RewriteCond не бачить заголовків %{HTTP_X_XSRF_TOKEN}

Ще одна неочевидна річ: якщо ви додаєте пробіл в регулярку .htaccess, наприклад так

RewriteCond %{HTTP:X-XSRF-TOKEN} ^.{40, 45}$

то отримуєте помилку 500.

Як на мене - це дуже дивна вимога apache до регулярних виразів, але видаливши пробіл у {40, 45}, все працює як очікується.