Как работает этот синтаксис переменной окружения Apache? - PullRequest
0 голосов
/ 15 мая 2019

Я видел несколько примеров динамической установки заголовков источника запроса в htaccess, которые выглядят примерно так:

SetEnvIf Origin "^http(s)?://(.+\.)?(example\.com|example\.org)$" REQUEST_ORIGIN=$0
Header always set Access-Control-Allow-Origin %{REQUEST_ORIGIN}e env=REQUEST_ORIGIN

Однако я нигде не могу найти объяснения синтаксиса этой второй строки. Я также посмотрел здесь, где я нашел пример с похожим синтаксисом, но опять же, ничего не объяснил, как это работает:

https://httpd.apache.org/docs/2.4/env.html

В частности, я хочу знать о %{REQUEST_ORIGIN}e и env=REQUEST_ORIGIN.

Что делает каждая из этих вещей? Первый, кажется, что-то делает с переменной, но как работает синтаксис фигурной скобки и почему завершающий e?

1 Ответ

1 голос
/ 18 мая 2019

Во второй строке задается Access-Control-Allow-Origin, только если установлена ​​переменная REQUEST_ORIGIN .

О %{REQUEST_ORIGIN}e говорит о том, что необходимо получить значение из переменной среды.

По сути, эти две строки вместе проверяют правильное / безопасное происхождение и устанавливают правильные значения заголовков CORS, если проверка прошла успешно.

Документация

Директива Header можетсопровождаемый дополнительным аргументом, который может быть любым из:

...

env = [!] varname

Директива применяетсятогда и только тогда, когда существует переменная окружения varname.А!перед varname отменяет тест, поэтому директива применяется, только если varname не установлена.

Что касается синтаксиса e:

% {VARNAME} eсодержимое переменной среды VARNAME.

Ссылки:

http://httpd.apache.org/docs/current/mod/mod_headers.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...