WWW-Authenticate

HTTP 401 Unauthorizedだけだと、ただ認証情報が無いってページ表示するだけなので、WWW-Authenticateヘッダで認証方法を示すと、ブラウザ側はユーザー名とパスワードの入力画面を出してくれる。

HTTP 認証 - HTTP | MDN
WWW-Authenticate - HTTP | MDN

http_server.cで、

ヘッダに、"WWW-Authenticate: Basic\r\n"を追加する。
"Basic"はBasic認証方式にするって事。
これでアクセスすると、

ユーザー名とパスワードの入力ダイアログが出る
ユーザー名とパスワードの入力ダイアログが出る

ユーザー名とパスワードの入力ダイアログが出る。

この時のブラウザ側のリクエストは普通
この時のブラウザ側のリクエストは普通

この時のブラウザ側のリクエストは普通。

ただ今の時点でどんなユーザー名とパスワードを入力しても
ただ今の時点でどんなユーザー名とパスワードを入力しても

ただ今の時点でどんなユーザー名とパスワードを入力しても、

跳ね返される
跳ね返される

跳ね返される。

入力してログイン押した時のヘッダを見ると、
入力してログイン押した時のヘッダを見ると、

入力してログイン押した時のヘッダを見ると、Authorizationヘッダが付いていて、Basicの後に文字列が来ているが、これはユーザー名とパスワードを':'で繋げてBase64エンコードしたもの。
これを見て、サーバーが判断するのだが、今回は無視してるので跳ね返される。
でキャンセルを押すと、

Unauthorizedのページが表示
Unauthorizedのページが表示

Unauthorizedのページが表示。

キャンセルした時のヘッダも普通
キャンセルした時のヘッダも普通

キャンセルした時のヘッダも普通。

Sample/http/WWW-Authenticate/WWW-Authenticate/src/WWW-Authenticate at master · bg1bgst333/Sample · GitHub