POST /goform/ser2netconfigAT HTTP/1.1
Host: 192.168.16.254
Connection: keep-alive
Authorization: Basic YWRtaW46YWRtaW4= //筆者注釋,Authorization: "Basic 用戶名和密碼的base64加密字符串"
Content-Length: 23
uart=9600,8,n,1&save=1
用中文簡述一下http auth的過程:
客戶端發送http請求
服務器發現配置了http auth,於是檢查request里面有沒有"Authorization"的http header
如果有,則判斷Authorization里面的內容是否在用戶列表里面,Authorization header的典型數據為"Authorization: Basic jdhaHY0=",其中Basic表示基礎認證, jdhaHY0=是base64編碼的"user:passwd"字符串。如果沒有,或者用戶密碼不對,則返回http code 401頁面給客戶端。
標准的http瀏覽器在收到401頁面之后,應該彈出一個對話框讓用戶輸入帳號密碼;並在用戶點確認的時候再次發出請求,這次請求里面將帶上Authorization header
一次典型的訪問場景是:
瀏覽器發送http請求(沒有Authorization header)
服務器端返回401頁面
瀏覽器彈出認證對話框
用戶輸入帳號密碼,並點確認
瀏覽器再次發出http請求(帶着Authorization header)
服務器端認證通過,並返回頁面
瀏覽器顯示頁面
使用http auth的場景不會用cookie,也就是說每次都會送帳號密碼信息過去。然后我們都知道base64編碼基本上等於明文。這削弱了安全。
由於種種缺點,http auth現在用的並不多。不過在路由器等場合還是有應用的,原因是http auth最簡單,使用起來幾乎是零成本。
在你需要做訪問控制,又不想拖上SSO、數據庫之類的東西的時候,http auth不失為一個簡潔的選項。
http://blog.csdn.net/libaineu2004/article/details/38384487