511 Network Authentication Required

ネットワークにアクセスするにはクライアントのログインが必要です。

使いどころ

ホテルや空港の Wi-Fi のキャプティブポータル。

よくある原因と対処法

511 はキャプティブポータル向けです。ホテル、空港、カフェの Wi-Fi のように、ログインするか利用規約に同意するまで通信を横取りするものです。ポータルは要求されたサイトになりすますのではなく、ログインリンク付きの 511 を返すべきです。OS は captive.apple.com や connectivitycheck.gstatic.com/generate_204 などの既知の URL を取得してポータルを検出し、予期しない応答が返るとログイン画面を開きます。

HTTPS はきれいに横取りできないため、ポータルのあるネットワークでは通常、511 ではなく証明書エラーが表示されます。neverssl.com のような平文の http:// サイトを開くと、ログインページが表示されます。キャッシュは 511 を決して保存してはならず、アプリはこれを API エラーではなくネットワークの問題として扱うべきです。自分のオリジンサーバーがこれを送ることは決してあってはなりません。

サーバーエラー (5xx)

5xx はサーバーエラーです。リクエストに問題がなくても、サーバーやその背後の何かが失敗しています。アラートを設定しておく価値があります。

レスポンスでの表示

HTTP/1.1 511 Network Authentication Required

返し方

Node.js / Expressres.status(511).end()
Python / Flaskreturn '', 511
nginxreturn 511;

確認方法

curl -s -o /dev/null -w "%{http_code}\n" https://example.com/

HTTP ステータスコードを開く