【问题标题】:Perl equivalent of PHP_AUTH_PWPerl 等效于 PHP_AUTH_PW
【发布时间】: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。它剥离了其他所有内容。

标签: php perl jquery cgi


【解决方案1】:

查看这篇文章:http://www.besthostratings.com/articles/http-auth-php-cgi.html

它使用 ModReWrite 将 Http Authorization 标头写入环境变量。然后您可以在您的 CGI 脚本中访问和解码它。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
</IfModule>

【讨论】:

    猜你喜欢
    • 2014-09-29
    • 2011-03-13
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 2012-03-31
    • 2012-02-24
    • 2013-05-12
    相关资源
    最近更新 更多