【发布时间】:2011-11-13 20:16:01
【问题描述】:
我在 jquery 中使用跨域 AJAX,在中间使用本地转发脚本,我需要将基本身份验证信息传递到第二个域。
在 PHP 中,我知道我可以访问 $_SERVER['PHP_AUTH_USER'] 和 $_SERVER['PHP_AUTH_PW'] 变量,它们是简单的明文,所以我的转发脚本可以毫无困难地使用这些信息。
但是,由于我无法控制的原因,我必须使用 Perl CGI 执行此任务。我知道有$ENV{REMOTE_USER},但我一生都无法弄清楚如何找到密码。我试过$ENV{HTTP_AUTHORIZATION},但总是空白。
如何在 Perl 中读取基本身份验证密码?或者,至少,有没有办法让我的 CGI 直接读取授权标头,以便我可以自己进行 base64 解码和拆分字符串?
谢谢!
【问题讨论】:
-
在你建议之前,mod_perl 也不是一个选项。
-
您知道在客户端发送授权标头之前必须先发送 401 响应吗?
-
Apache 已经很好地处理了实际的身份验证。如果我在浏览器中访问我的测试网页,我会弹出用户名/密码,并且我的脚本可以成功显示 REMOTE_USER。这只是我不知道如何获取的密码,我担心 CGI 层可能已经无法访问它。
-
问题的另一个角度:有什么我可以添加到 .htaccess 文件或类似的东西,以将信息存储在环境变量中吗?
-
如果 apache 已经通过
mod_auth_whatever处理身份验证,那么您将获得的只是REMOTE_USER。它剥离了其他所有内容。