2011-09-09 93 views
3

我正在jquery中使用跨域AJAX,在中間使用本地轉發腳本,並且我需要將基本身份驗證信息傳遞到第二個域。 在PHP中,我知道我可以訪問$_SERVER['PHP_AUTH_USER']$_SERVER['PHP_AUTH_PW']變量,它們都是簡單的明文,所以我的轉發腳本可以毫不費力地使用這些信息。Perl等效PHP_AUTH_PW

因爲我無法控制的原因,我必須用Perl CGI來執行這個任務。我知道有$ENV{REMOTE_USER},但我不能爲我的生活弄清楚如何找到密碼。我試過$ENV{HTTP_AUTHORIZATION},但總是空白。

如何在Perl中讀取基本身份驗證密碼?或者,至少,有沒有辦法讓我的CGI直接讀取授權標題,以便我可以base64解碼並自行拆分字符串?

謝謝!

+0

在你建議它之前,mod_perl也不是一個選項。 – Josh

+0

您知道您必須在客戶端發送授權標頭之前發回401響應嗎? – hobbs

+0

實際的身份驗證已被apache正確處理。如果我在瀏覽器中訪問我的測試網頁,則會彈出用戶名/密碼並且我的腳本可以成功顯示REMOTE_USER。這只是我不知道該如何處理的密碼,我擔心這可能是CGI層無法訪問的。 – Josh

回答

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>