我的 Apache conf 文件中有这个:
<IfModule headers_module>
SetEnv ntPrincipal "user@domain.com"
SetEnv legalGivenNames "Me"
SetEnv legalFamilyName "LastName"
SetEnv email "user@domain.com"
SetEnv partyId "123456"
SetEnv lang "eng"
#Set Env activeDirectoryGroup "Domain\GroupA"
</IfModule>
这在 PHP 中启用了以下功能$_SERVER['ntPrincipal']
。
这样做的原因是在我们的本地开发环境中伪造类似的标头,这些标头会自动注入(通过 Shibboleth)到我们的 dev/test/prod 环境中。这适用于 Apache/PHP。
问题是,我的本地环境现在必须代理到 Jetty(不相关的独立应用程序)并转发那些相同的标头。
这是我的 Apache 配置:
ProxyPass /daisy/ http://127.0.0.1:8888/
ProxyPassReverse /daisy/ http://127.0.0.1:8888/
ProxyHTMLURLMap http://127.0.0.1 /daisy/
<Location /daisy/>
ProxyPassReverse /
SetOutputFilter proxy-html
ProxyHTMLURLMap http://127.0.0.1:8888 /daisy/
ProxyHTMLURLMap / /daisy/
ProxyHTMLURLMap /daisy/ /daisy/
RequestHeader unset Accept-Encoding
</Location>
更新 1
Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
String headerName = headerNames.nextElement();
System.out.println(headerName);
Enumeration<String> headers = request.getHeaders(headerName);
while (headers.hasMoreElements()) {
String headerValue = headers.nextElement();
System.out.println(headerValue);
}
}
这段代码列出了发送到 Jetty 的所有标头。在这种情况下,PHP 中可用的标头在 Jetty 上不可用。