Я работаю с настройкой сервера Apache, где мы хотим использовать SetEnv в vhost, чтобы определить, запущен ли код в разработке, бета-версии или в производстве. Фактическое веб-приложение запущено наColdfusion 8/JRunЯ установил значение в vhost, используя следующий код:
<VirtualHost *:80>
...
SetEnv COLDFUSION_ENVIRONMENT development
...
</VirtualHost>
Приложение прекрасно считывает это значение. Однако, если я использую плагин Modify Headers в Firefox, чтобы отправить заголовок с именем COLDFUSION_ENVIRONMENT с другим значением, например, foobar, то в приложении используется значение, поступающее из браузера, а не значение, определенное в vhost. Вопрос, конечно, в том, почему и как я могу это предотвратить? Использование переменной среды, кажется, довольно распространено для определения того, на каком сервере запущено приложение, поэтому, если это действительно способ сделать это, мне это кажется довольно большой дырой в безопасности, поскольку это откроет возможность переключения в режим разработки на сервере производства... Есть ли какой-то другой лучший способ сделать это в Coldfusion?
Обновлять:
Мне удалось обойти исходную проблему, используя следующее вместо SetEnv:
<VirtualHost *:80>
...
RequestHeader set COLDFUSION_ENVIRONMENT development
...
</VirtualHost>
Тем не менее, это все еще похоже на хак, и мне все равно хотелось бы знать, почему Coldfusion в основном игнорирует значения SetEnv, если вы отправляете их в качестве заголовка, а также есть ли какая-то передовая практика или нет.
решение1
Если вы просто проверяете область действия CGI с помощью CFDUMP, то он не выведет пользовательские переменные окружения. Он только выведет предопределенный список переменных CGI.