ブラウジング中にエラーページが表示されるのは、サイト所有者にとっても訪問者にとってもイライラの種になります。また、多くのHTTPレスポンスコードにも同じことが言えますが、401エラーは情報が不足しているため特に厄介です。

どのブラウザでも発生し得るこの一般的なエラーは、実は多くの場合、簡単に解決可能です。

今回は「401 Unauthorized」エラーの概要、原因、そして5つの解決方法をご紹介します。

401エラーコードとは

IETF(Internet Engineering Task Force)では、「401 Unauthorized」エラーは次のように定義されています(英語原文の日本語訳)。

401(Unauthorized)ステータスコードは、ターゲットリソースに対する有効な認証情報がないことから、リクエストが受理されなかったことを示す。401のステータスコードを返すサーバーは、ターゲッ トリソースに適用可能なチャレンジ(認証方式)を少なくとも1つ含むWWW-Authenticateヘッダーフィールドを送信しなければならない

ブラウザでの見え方

400番台のHTTPステータスコードは、リクエストに問題がある際に送信されます。中でも401エラーは、ブラウザが特定のページへのアクセスを拒否すると発生します。

その結果、ブラウザはページを読み込む代わりにエラーメッセージを表示します。401エラーはブラウザを問わず発生する可能性があり、メッセージはブラウザによって異なります。

例えばChromeやEdgeの場合、ページが機能していないことを伝える簡単なメッセージとともに以下のような紙のアイコンが表示されます。メッセージの下部には「HTTP Error 401」という文言が表示され、問題が解決しない場合はサイトの所有者に問い合わせるように指示されます。

Chromeの401エラー
Chromeの401エラー

他のブラウザでは、「401 Authorization Required(認証が必要です)」というメッセージとともに以下のような空白のページが表示されます。

Nginxのエラーメッセージ「401 Authorization Required」
Nginxのエラーメッセージ「401 Authorization Required」

他にも以下のようなバリエーションがあります。

  • HTTP 401 Error – Unauthorized
  • 401 Unauthorized
  • Access Denied

これらのエラーは、アクセスするためにログインが必要になるサイトで発生し、認証情報に問題があるか、ブラウザが有効な認証情報として読み取れないことを意味するのが一般的です。

403 Forbidden」エラーと似ており、ユーザーへのアクセスが許可されていないことを意味しますが、403エラーとの違いとして、401エラーは認証プロセスが失敗したことを示します。

このコードは、ウェブページやリソースへのアクセス許可に使用される認証方法を識別する役割を担う、WWW-Authenticateヘッダーを介して送信されます。

エラーコード HTTP 401 Unauthorized
エラーの種類 主にクライアントサイドのエラー
エラーのバリエーション 401 Authorization Required
401 Unauthorized
HTTP 401 Error – Unauthorized
Access Denied
エラーの原因 古いブラウザキャッシュとCookie
プラグインの非互換性
不正なURLまたは古いリンク

401エラーの原因

400番台のエラーコードは、クライアントサイド(またはブラウザサイド)の問題に起因していることがわかります。エラーはブラウザ内で発生している可能性もありますが、必ずしもそうではありません。

401エラーは、WordPressサイトのパスワードで保護されたページのような制限付きリソースにアクセスしようとすると発生します。したがって、エラーの原因は認証情報に関係している可能性が高いです。

  1. 古いブラウザキャッシュとCookie:ブラウザのキャッシュとCookieが古いことが原因で、認証が正常に行われていない。ブラウザが有効な認証情報(または認証情報自体)を使用していない場合、サーバーはリクエストを拒否する。
  2. プラグインの非互換性:プラグインの非互換性やエラーが原因で発生することも。例えばファイアウォールやセキュリティプラグインがログインの試行を悪意のある行為と誤認し、ページを保護するために401エラーを返すことがある。
  3. 不正なURLまたは古いリンク:URLの入力ミスや古いリンクなど、些細なミスに起因している可能性もある。

401エラーの解決方法

401エラーの概要と原因を押さえたところで、早速解決策を見ていきましょう。

1. URLのエラーを探す

まずは最も簡単なトラブルシューティングとして、URLの見直しから始めましょう。

また、エラーが発生したページへのリンクが誤ったURLに紐付いている可能性もあります。リンクが古い、またはもう存在していない(+リダイレクトが設定されていない)ページに紐付いているかもしれません。

したがって、初歩的ではありますが、URLを再確認する価値はあります。特に手入力した場合は、綴りなどに誤りがないかを見直してみてください。リンクをクリックしてエラーが発生した場合には、リンクに含まれているURLが正しいかどうかをチェックしましょう(またはサイトから直接そのページにアクセスしてみる)。

2. ブラウザのキャッシュをクリアする

ブラウザのキャッシュは、ページの読み込み時間を短縮し、オンライン体験を向上向上させるように設計されていますが、時にはエラーを引き起こすこともあります。

前述したとおり、401エラーの主な原因の一つは、キャッシュデータやCookieが古い、または正しくないこと。ページのURLに問題がなければ、ブラウザキャッシュのクリアが次のステップです。

これにより、ブラウザにローカルに保存されている、認証プロセスを妨げているかもしれない無効な情報が一掃されます。また、Cookieにも認証情報が含まれていることもあります。

Google Chromeを使用している場合は、ブラウザの右上にある3つの点をクリックして、ドロップダウンから「設定」を開きます。「プライバシーとセキュリティ」の「閲覧履歴データを削除」をクリックします。

Google Chromeの「閲覧履歴データを削除」
Google Chromeの「閲覧履歴データを削除」

表示されるポップアップの「基本設定」タブを選択し、3つの項目をすべて選択した上で、「データを削除」をクリックします。

閲覧履歴データを削除
閲覧履歴データを削除

他のブラウザではまた違った手順になります。たとえばMozilla Firefoxの場合、ブラウザの右上にある3本線のアイコンをクリックして、「履歴」>「最近の履歴を消去…」を選択します。

Firefoxで履歴を削除
Firefoxで履歴を削除

表示されるパネルの「期間」ドロップダウンから「すべての履歴」を選択し、「一時的にキャッシュされたファイルとページ」を選択した上で、「消去」をクリックします。

ブラウジングデータとCookieを消去
ブラウジングデータとCookieを消去

別のブラウザでのキャッシュのクリア方法はこちらをご覧ください。

3. DNSキャッシュをクリアする

上記2つの解決策が有効でない場合には、ドメインネームサーバー(DNS)のキャッシュをクリアしてみる価値もあります。

Windowsでこれを行うには、スタートアイコンをクリックして、検索バーに「cmd」と入力してEnterキーを押すと、コマンドプロンプトが表示されます。ipconfig/flushdnsを貼り付けて、再度Enterキーを押してください。

Windowsのコマンドプロンプト
Windowsのコマンドプロンプト

Macの場合は、Finderを開き、「アプリケーション」>「ユーティリティ」>「ターミナル」を開きます。

Macのターミナル
Macのターミナル

コマンドラインsudo killall -HUP mDNSResponderを貼り付けて、Enterキーを押したら完了です。その後、エラーが表示されたページを再度読み込んで、401エラーが解消されるかどうかを確認してみてください。

4. WordPressプラグインを無効にする

401エラーの原因がブラウザにあるとは限りません。WordPressサイトにアクセスしようとしてエラーに遭遇した場合は、1つまたは複数のWordPressプラグインが原因になっているかもしれません。

一部プラグイン、特にセキュリティに特化したプラグインは、不審なログイン操作が疑われる際に401エラーを返すように設定されています。また、互換性の問題があるプラグインもあるため、WordPressプラグインを一度すべて無効にして、エラーが解消されるかどうかを確認してみてください。

WordPress管理画面の「プラグイン」>「インストール済みプラグイン」を開きます。プラグイン一覧の上にあるチェックボックスを選択し、「一括操作」ドロップダウンから「無効化」を選択し、「適用」をクリックします。

WordPress管理画面ですべてのプラグインを無効化
WordPress管理画面ですべてのプラグインを無効化

その後、ページに再度アクセスしてエラーが解消されているかどうかを確認しましょう。これでエラーが消えている場合は、いずれかのプラグインに問題があることがわかります。問題のプラグインを特定するため、1つずつ有効化し、その都度ページを確認するという作業を行います。

問題のあるプラグインを特定したら削除して、必要に応じて代替プラグインを見つけるか、プラグイン開発元に問い合わせてみてください。

5. WWW-Authenticateヘッダーのレスポンスを確認する

まだエラーが解消されていない場合は、サーバーサイドに問題があるかもしれません。この方法はやや複雑になります。

先に触れたとおり、401ステータスコード⁨⁩はWWW-Authenticateヘッダーを介して送信され、WWW-Authenticate: <type> realm=<realm>というように表示されます。これには、「チャレンジ」と呼ばれる、アクセスを許可するためにどのような認証が必要かを示すデータ列が含まれます。

つまり、ヘッダーのレスポンスが送信されたかどうか、特にどの認証方式が使用されたかを確認することでエラーの原因を絞り込むことができます。

これを行うには、401エラーが表示されているウェブページにアクセスし、Chromeのデベロッパーツールを使用します。ページ上で右クリックして「検証」をクリックするか、Ctrl + Shift + Jで開きます。

ネットワーク」タブを開き、ページを再読み込みすると、リソースの一覧が生成されます。「ステータス」ヘッダーを選択して一覧を並べ替えて、401ステータスコードを探します。

Chromeのデベロッパーツールで401エラーを確認
Chromeのデベロッパーツールで401エラーを確認

401エラーを示す項目を選択して、「ヘッダー」タブを開きます。「レスポンスヘッダー」の下にあるWWW-Authenticateヘッダーを見つけます。

「レスポンスヘッダー」セクションを確認
「レスポンスヘッダー」セクションを確認

レスポンスヘッダーに含まれる情報、特に認証スキームは、何が起きているかに関する情報を詳細に示してくれます。これが解決の手掛かりとなり、サーバーが期待している認証方式を把握することができます。

上の例では、認証スキームが「Basic」であることがわかり、これは認証情報としてIDとパスワードだけを要求することを意味します。この情報の扱い方や詳細についてはこちらをご覧ください。

まとめ

ブラウザとサーバーの通信やリクエストの認証に問題があると、401エラーのような問題に遭遇することがあります。遭遇すると厄介ですが、このエラーは一時的なものであり、今回ご紹介した方法で解決可能です。