[問題]瀏覽器對http 基礎認證的處理
目前手邊有一台webserver,當ie瀏覽器連線到此server時,如果瀏覽器未通過認證則會
發出一個401狀態給瀏覽器,觀察伺服器裡面回應401狀態的code如下
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 */
}
#if 1
if (req->method != M_HEAD )
{
req_write(req,"<HTML><HEAD><TITLE>401 Unauthorized</TITLE></HEAD>\n"
"<BODY> 入力されたユーザー名、あるいはパスワードに誤りがあり、本製品の管理画面
にアクセス できません。以下の内容を参考にして、再度入力を試みてください 。・・
・\n</BODY></HTML>\n");
}
req_flush(req);
#else
if (req->method != M_HEAD)
{
req_write(req,
"<HTML><HEAD><TITLE>401 Unauthorized</TITLE></HEAD>\n"
"<BODY><H1>401 Unauthorized</H1>\nYour client does not "
"have permission to get URL ");
req_write_escape_html(req, req->request_uri);
req_write(req, " from this server.\n</BODY></HTML>\n");
}
req_flush(req);
#endif
}
我發現當ie瀏覽器3次認證錯誤後,它會顯示server所回應的錯誤訊息頁面
而chrome瀏覽器則會一直嘗試輸入帳密
想問一下ie瀏覽器在3次認證錯誤後是對server回應的401狀態做了甚麼處理?
有沒有軟體可以觀察到瀏覽器做了甚麼處理?
還有為何錯誤訊息的頁面只有在認證視窗下按下取消或者是ie瀏覽器3次認證錯誤才會出
現?我看server程式只要沒通過認證它每次都有送出那段錯誤訊息頁面的html給瀏覽器。
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 36.231.30.31
※ 文章網址: https://www.ptt.cc/bbs/Web_Design/M.1487382100.A.2E6.html
→
02/18 09:53, , 1F
02/18 09:53, 1F
→
02/18 10:07, , 2F
02/18 10:07, 2F
→
02/18 10:23, , 3F
02/18 10:23, 3F
→
02/18 10:26, , 4F
02/18 10:26, 4F
→
02/18 10:26, , 5F
02/18 10:26, 5F
→
02/18 10:27, , 6F
02/18 10:27, 6F
→
02/18 10:27, , 7F
02/18 10:27, 7F
→
02/18 10:27, , 8F
02/18 10:27, 8F
→
02/18 11:36, , 9F
02/18 11:36, 9F
Web_Design 近期熱門文章
PTT數位生活區 即時熱門文章