perl – 剥离自定义HTTP标头字段

我的公司销售一个基于LAMP(其中P = Perl,而不是 PHP)应用程序作为设备部署.客户正在尝试将他们的SiteMinder SSO与我们的应用程序集成,以便我们的设备位于运行SiteMinder Apache插件的代理后面,该插件充当网守.对于我们的应用程序通过SSO对用户进行身份验证,我们希望看到包含SSO cookie(本例中为SMSESSION)的HTTP请求以及包含用户名的自定义HTTP头变量.

但是,当我们的Apache服务器从SSO代理接收HTTP请求时,尽管存在cookie,但所有自定义HTTP似乎都已被剥离.我已经检测了Perl代码,使用以下代码将标头写入日志文件:

my $q = new CGI;
...
my %headers = map { $_ => $q->http($_) } $q->http();
my $headerDump = "Got the following headers:\n";
for my $header ( keys %headers ) {
    $headerDump = $headerDump . "$header: $headers{$header}\n";
}
kLogApacheError("info", $headerDump);

…这是我得到的输出(为保密而略微编辑):

[Wed Mar 16 23:47:31 UTC 2011] [info] Got the following headers:
        HTTP_COOKIE: s_vi=[CS]v1|26AE2FFD851D091F-4000012E400035C5[CE]; s_nr=1297899843493; [snip]
        HTTP_ACCEPT_LANGUAGE: en-US,en;q=0.8
        HTTP_ACCEPT_ENCODING: gzip,deflate,sdch
        HTTP_CONNECTION: keep-alive
        HTTP_ACCEPT: application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
        HTTP_ACCEPT_CHARSET: ISO-8859-1,utf-8;q=0.7,*;q=0.3
        HTTP_USER_AGENT: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.107 Safari/534.13
        HTTP_HOST: [redacted].com

IOW,我期待的客户HTTP标头丢失了.当我们将流量从代理重定向到不同的Apache服务器(即不是我们的设备)时,所有20个自定义标头都会按预期显示.这强烈暗示我们的Apache服务器正在剥离标头.

即使使用这种特殊的SSO解决方案,我们也从未遇到过其他部署这样的问题.我意识到这与本网站上的另一个问题类似(Server removes custom HTTP header fields),但那里的建议(例如运行mod_security导致的问题)不适用.

我们的服务器可能正在剥离HTTP标头还有其他原因吗?或者可能还有其他事情发生?

谢谢你的帮助!

马特

您是否嗅过代理与Apache实例之间的原始HTTP流量?如果此处缺少必要的标头,则问题出在代理端.
相关文章
相关标签/搜索