Chrome79以降からは、ステータスコード401を返すページにBasic認証を設定するとアクセスできなくなる
はじめに
今までBasic認証をかけていて閲覧はできていたページが、Chrome79から急に閲覧できなくなるという問題が発生しました。
StackOverflowやTwitterなどを調べてみてもそのような問題で悩んでいる方はいません。
ちなみに対象のページはやや特殊で、Basic認証をかける以前から、サービスにログインせずにアクセスした場合は ステータスコード = 401
を返却しつつ、ページコンテンツを返却します。
Chromium のソースコードを読んでみましたが、なかなかリーディングができず。(これは僕のスキルの問題です)
そこで実際に問題を再現させた後、「原因」の調査と「対策」を検討してみました。
検証環境
サーバサイド
クライアントサイド
プラットフォーム
PC
ブラウザ
2020-01-08現在、確認した環境は以下の2つです。 version 81
は Chrome Canary を利用しました。
Version 79.0.3945.88 (Official Build) (64-bit)
( Chrome )Version 81.0.4020.0 (Official Build) canary (64-bit)
( Chrome Canary )
*※いずれの環境でも問題が発生することを確認済みです。
検証環境の用意
まずはサーバ環境を構築します。
Docker を使って Apache+PHP
の実行環境を構築します。
- カレントディレクトリのファイルをDocuemntRootにマウントさせます
http://localhost:9000
でアクセスできるようにしておきます。
次に該当ページの作成とBasic認証の設定を行います。
最終的に3ファイル作成されます。
ブラウザでアクセスしてみる
それではブラウザでアクセスしてみましょう。
Chrome79
以降でアクセスすると、 Basic認証 ダイアログが表示されます。
Basic認証 で正しいユーザ、パスワードを入力しても、ページは真っ白のままとなります。
ところが Firefox
や Safari
でアクセスすると Basic認証 突破後にページが表示されます。
Basic認証の認証済みステータスがリセットされる
HTTP RESPONSE CODE = 401
が返却されると、Basic認証の認証済みステータスがリセットされるようです。
対策
どうしても Basic認証 ( Digest認証を含む ) を設定したい場合、 レスポンスコード = 401
を返却するようなページはつくらない、ということになるかと思います。
あるいは利用者が限定される場合は、Chrome以外のブラウザを利用してもらうことで対処できるかと思います。
ディスカッション
コメント一覧
まだ、コメントがありません