2011-02-24 105 views
12

HTTP_AUTHORIZATION似乎是一個服務器端環境變量,但它可以是什麼值?有沒有例子?它是否由一些HTTP標頭設置?什麼是HTTP_AUTHORIZATION環境變量?

另外,當它詢問用戶名和密碼時它在瀏覽器端看起來如何(它是一個HTML表單還是一個彈出框,詢問用戶名和密碼(這是模態的,所以如果不點擊OK或取消,那麼瀏覽器不能點擊))。

通常,用戶登錄表單將發佈到服務器POST變量,如

username=peter&password=123 

所以這是什麼HTTP_AUTHORIZATION什麼?

回答

2

有關HTTP授權標頭的詳細描述可以在RFC2617中找到,位於http://www.ietf.org/rfc/rfc2617.txt,第3.2.2節。

+0

感謝......幸運的是,它不是一個200頁的文件...以什麼方式是這樣的提供給用戶(在瀏覽器上)的用戶名和密碼請求? – 2011-02-24 21:21:11

+0

我不是100%確定,但我的猜測是這是老派的方式。htaccess樣式的身份驗證已完成,其中會彈出一個對話框,其中包含用戶名/密碼提示。 – gpcz 2011-02-24 21:25:33

+0

是的,就是那個。 – SimonJ 2011-02-24 21:49:38

25

只是讓我們在同一頁上,一個典型的POST請求看起來是這樣的:

 
POST /some/page HTTP/1.1       <-- request line 
Host: www.example.com        <-------------------\ 
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-US) <--| headers 
Content-Length: 27         <-------------------/ 
... some other headers ... 
                <-- blank line 
username=peter&password=123       <-- POST data, if any 

開始HTTP_環境變量是從何時CGI scripts是提供動態的主要途徑天宿醉內容,並且它們向您的服務器端代碼指示客戶端提供了一個特定的頭部作爲請求的一部分。從CGI spec

元變量與名字開頭「HTTP_」包含從客戶端請求報頭字段讀取的值,如果所使用的協議是HTTP。 HTTP標題字段名稱將轉換爲大寫字母,將所有出現的「 - 」替換爲「」,並且前綴爲「HTTP」以提供元變量名稱。

Authorization: header用於多種HTTP認證機制;通常的流程爲:

  1. 瀏覽器試圖請求一個頁面
  2. 服務器響應以「401未授權」和含有方案和(有時)一個挑戰WWW-Authenticate:
  3. 瀏覽器提示用戶憑據,然後重新發送帶有Authorization:標題的請求,其中包含對挑戰的響應

挑戰和響應的確切格式根據正在使用哪種認證方案而有所不同; RFC2617(gpcz鏈接到)涵蓋了「基本」(最常見的,發送base64編碼的「用戶名:密碼」)和「摘要」(包含加密哈希),NTLM是另一種在某些Windows環境中可見的。

0

也可能值得注意的是標準的Joomla! .htaccess文件中有以下規則來設置基於請求Authorization頭的HTTP_AUTHORIZATION環境變量:

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]