401 Unauthorized は、対象のリソースに対する有効な認証情報がリクエストに含まれていないことを示します。名前とは裏腹に、これは認可ではなく認証(相手が誰なのかの確認)に関するコードです。サーバーは、Basic realm="Staging" や Bearer など少なくとも 1 つのチャレンジを含む WWW-Authenticate ヘッダーを送り、認証の方法をクライアントに伝える必要があります。
リクエストにすでに認証情報が含まれていた場合、401 はそれが拒否されたこと、つまりパスワードの誤りやトークンの期限切れを意味します。ブラウザーは、Basic と Digest のチャレンジに対してログインダイアログを表示します。API は、トークンがない場合や無効な場合に 401 を返し、クライアントが新しいトークンを取得して再試行できるようにします。
ユーザーが誰かはわかっているもののアクセスが許可されていない場合は 403 Forbidden を、オリジンサーバーではなくプロキシが認証を求める場合は 407 を使います。
レスポンス例
HTTP/1.1 401 Unauthorized
Date: Fri, 06 Nov 2026 10:15:32 GMT
WWW-Authenticate: Basic realm="Staging", charset="UTF-8"
Content-Type: text/plain; charset=utf-8
Content-Length: 23
Authentication required SEO とリダイレクトチェック
認証が必要なページはインデックスされません。クローラーはログインせず、401 を返す URL はほかの 4xx エラーと同様に扱われます。ステージングサイト、管理画面、非公開のコンテンツではまさにこれが望ましい動作であり、ステージングサイトを検索結果に出さない方法としては、HTTP 認証のほうが robots.txt よりもはるかに確実です。本番サイトに誤ってステージングのパスワードが残っていないかを確認し、公開ページでクローラーに 401 を返さないようにしてください。
保護された URL を TrueURL でチェックするには、「カスタムリクエストヘッダー」に Authorization ヘッダーを追加します。その際は、テスト用の認証情報を使ってください。
よくある原因と主な用途
- HTTP の Basic 認証で、ステージングサイトや管理サイトを保護している場合。
- API トークンがない、期限が切れている、または取り消されている場合。
- セッションの有効期限が切れ、API がログインページへのリダイレクトではなく 401 を返している場合。
- リダイレクトで認証情報が失われた場合。リダイレクト先が別のホストだと、多くのクライアントは
Authorizationヘッダーを破棄します。