저는 가상 호스트에서 SetEnv를 사용하여 코드가 개발, 베타 또는 프로덕션에서 실행 중인지 정의하려는 Apache 서버 설정을 작업하고 있습니다. 실제 웹 애플리케이션은 다음에서 실행됩니다.Coldfusion 8/JRun. 다음 코드를 사용하여 vhost에 값을 설정했습니다.
<VirtualHost *:80>
...
SetEnv COLDFUSION_ENVIRONMENT development
...
</VirtualHost>
앱은 이 값을 잘 읽습니다. 그러나 Firefox에서 헤더 수정 플러그인을 사용하여 COLDFUSION_ENVIRONMENT라는 헤더를 다른 값(예: foobar)과 함께 보내는 경우 가상 호스트에 정의된 값이 아니라 브라우저에서 나오는 값이 애플리케이션에 사용됩니다. 물론 문제는 왜 그리고 어떻게 이를 방지할 수 있는가 하는 것입니다. 앱이 어떤 서버에서 실행되고 있는지 확인하기 위해 환경 변수를 사용하는 것은 매우 일반적인 것 같습니다. 따라서 이것이 실제로 그렇게 하는 방법이라면 프로덕션 서버에서 개발 모드로 전환하십시오. Coldfusion에서 이를 수행하는 다른 모범 사례가 있습니까?
업데이트:
SetEnv 대신 다음을 사용하여 원래 문제를 해결할 수 있었습니다.
<VirtualHost *:80>
...
RequestHeader set COLDFUSION_ENVIRONMENT development
...
</VirtualHost>
그러나 여전히 해킹처럼 느껴지며 Coldfusion이 SetEnv 값을 헤더로 보내면 기본적으로 무시하고 모범 사례가 있는지 여부도 알고 싶습니다.
답변1
단순히 CGI 범위의 CFDUMP로 확인하면 사용자 정의 Env 변수가 출력되지 않습니다. 미리 정의된 cgi 변수 목록만 덤프합니다.