目前有個問題
瀏覽器上輸入ip後連接server時會跳出一個要求輸入帳號密碼的認證視窗
想問這個認證視窗是在server裡的哪個程式呼叫的?
謝謝
以下內容針對yvb提出的問題做回覆
這個BUG就像你推文所說的,不同瀏覽器對於認證失敗後的處理有所不同
,上頭是把這個情況當作是一個BUG,目標是希望能夠都是3次認證失敗導向
一個錯誤訊息的頁面
我對http只有接觸這個bug才去了解而已, HTTP status, HTTP header, HTTP auth
這邊都有去稍微了解,有找到server 裡對應到的code, HTTP cookie這部分還不是
很了解,沒有找到對應的code
至於認證的處理
當server判斷使用者沒通過認證會回401狀態,好像是由這裡來完成的
void send_r_unauthorized(request * req, const char *realm_name)
{
SQUASH_KA(req); req->response_status = R_UNAUTHORIZED;
if((req->http_version != HTTP09))
{
req_write(req, http_ver_string(req->http_version));
req_write(req, " 401 Unauthorized" CRLF);
print_http_headers(req);
req_write(req, "WWW-Authenticate: Basic realm=\".\"" );
req_write(req, realm_name); req_write(req, CRLF);
req_write(req, "Content-Type: " HTML CRLF CRLF); /* terminate header */
}
..
}
我在更改的時候也是在這附近更改,單純加入一個變數當作他送出認證的次數,超過
3次就不執行if的那段code,這樣雖然可以達到目的,但有個問題是,當我在網頁按f5或
是開啟新頁面連接時,我找不到一個正確位置來重置這個變數,導致它一直停留在錯誤訊
息頁面
當server在檢查使用者帳號密碼這部分,我有看到boa server裡有code是在做這方面的處
理,我對你所提到的那些方法不懂,所以不確定它裡面有沒有使用到那些方法。
謝謝
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 122.147.6.146
※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1486026867.A.54E.html