非公式のHTTPステータスコードまとめ

TRIAL＆RetailAI Advent Calendar 2024 17日目の投稿です。

https://qiita.com/advent-calendar/2024/retail-ai

前日は[@mrsd](https://qiita.com/mrsd)さんの[「Open WebUIにSwarmを組み込む」](https://qiita.com/mrsd/items/b692c3fd90a360d2e833)という記事でした。興味深かったですね。

## はじめに

役に立つのかは分かりませんが、どの規格にも規定されていない、非公式のステータスコードを紹介します。

## チートシート

| ステータスコード | メッセージ | 発行元 | 説明 |
|----------------|------|--------|------------|
| 218 | This is fine | Apache HTTP Server | サーバーの `ProxyErrorOverride` 設定が有効な際に、エラーメッセージの代わりに使用される |
| 419 | Page Expired | Laravel Framework | CSRF トークンが欠落または期限切れの場合 |
| 420 (1) | Method Failure | Spring Framework | メソッド失敗時に使用される非推奨のレスポンスステータス |
| 420 (2) | Enhance Your Calm | Twitter | Twitter Search and Trends API v1 でレート制限時に返される |
| 430 (1) | Request Header Fields Too Large | Shopify | 一定時間内に多すぎる URL リクエストがあった場合の非推奨レスポンス |
| 430 (2) | Shopify Security Rejection | Shopify | リクエストが悪意があると判断された場合 |
| 450 | Blocked by Windows Parental Controls | Microsoft | Windows ペアレンタルコントロールによってウェブページへのアクセスがブロックされた場合 |
| 498 | Invalid Token | Esri | ArcGIS for Server で、トークンの期限切れまたは無効を示す |
| 499 | Token Required | Esri | ArcGIS for Server で、トークンが必要だが送信されていないことを示す |
| 509 | Bandwidth Limit Exceeded | Apache Web Server/cPanel | サーバー管理者が指定した帯域幅を超過した場合 |
| 529 | Site is overloaded | Qualys SSLLabs | サイトがリクエストを処理できない状態 |
| 530 (1) | Site is frozen | Pantheon Systems | 非活動により凍結されたサイト |
| 530 (2) | Origin DNS Error | Shopify | Cloudflare が要求された DNS レコードを解決できない場合 |
| 540 | Temporarily Disabled | Shopify | リクエストされたエンドポイントが一時的に無効化された場合 |
| 598 | Network read timeout error | HTTP Proxy | プロキシ背後のネットワーク読み取りタイムアウトを示す |
| 599 | Network Connect Timeout Error | HTTP Proxy | プロキシ背後のネットワーク接続タイムアウトを示す |
| 783 | Unexpected Token | Shopify | リクエストに JSON 構文エラーがある場合 |
| 999 | Non-standard | LinkedIn | ログインなしでウェブページにアクセスできない場合 |

## 218 This is fine

Apache サーバで使われる。 ProxyErrorOverride 設定が有効になっているときに、 メッセージボディのサーバへの通過を許可するキャッチオールエラーです。 この状況では、4xxまたは5xxエラー・メッセージの代わりに表示されます。

https://http.dev/218

## 419 Page Expired

CSRFトークンがない、または期限切れの場合にLaravelフレームワークによって使用されます。

https://github.com/laravel/framework/blob/57ae89a8acbc316153315272a4af2e68370f5e36/src/Illuminate/Foundation/Exceptions/Handler.php#L492

## 420 Method Failure

WebDAVの開発中に提案された非推奨のレスポンスステータスで、メソッドが失敗したときにSpring Frameworkが使用する。

https://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/http/HttpStatus.html

## 420 Enhance Your Calm

Twitter Search and Trends APIのバージョン1では、クライアントがレート制限されている場合に返される。バージョン1.1以降では、代わりに429 Too Many Requestsレスポンスコードが使用される。"Enhance your calm "というフレーズは、1993年の映画「デモリションマン」に由来しており、この数字との関連は大麻を指していると思われる。

https://web.archive.org/web/20170927155109/https://developer.twitter.com/en/docs/basics/response-codes

## 430 Request Header Fields Too Large

Shopifyが429 Too Many Requestsレスポンスコードの代わりに使用する非推奨のレスポンスです。

https://www.contentkingapp.com/academy/http-status-codes/

## 430 Shopify Security Rejection

Shopifyによって、リクエストが悪意があると判断されたことを知らせるために使用される。

https://shopify.dev/docs/api/usage/response-codes

## 450 Blocked by Windows Parental Controls

Microsoftの拡張コードは、Windowsのペアレンタルコントロールがオンになっていて、要求されたウェブページへのアクセスをブロックしている場合に表示されます。

https://web.archive.org/web/20130511045107/https://public.bn1.livefilestore.com/y1pJXeg_sNOONKwMraE-xmZFWAfZF6COAKnyfgc-2ykUof743pV4XuRqm14pj-b_yK8Km4sfSR6mU5OhLrupZ8dFg

## 498 Invalid Token

ArcGIS for Server が返します。 コード 498 は、期限切れまたはその他の理由で無効なトークンを示します。

https://web.archive.org/web/20140926033953/http://help.arcgis.com/en/arcgisserver/10.0/apis/soap/index.htm#Using_token_authentication.htm

## 499 Token Required

ArcGIS for Server から返されます。 コード 499 は、トークンが必要ですが送信されていないことを示します。

https://web.archive.org/web/20140926033953/http://help.arcgis.com/en/arcgisserver/10.0/apis/soap/index.htm#Using_token_authentication.htm

## 509 Bandwidth Limit Exceeded

これは、共有ホスティングプロバイダーが顧客の帯域幅を制限するためによく使用します。

https://web.archive.org/web/20151123100640/https://documentation.cpanel.net/display/CKB/HTTP+Error+Codes+and+Quick+Fixes#HTTPErrorCodesandQuickFixes-509BandwidthLimitExceeded

## 529 Site is overloaded

SSLLabs サーバーテスト API で Qualys が使用し、サイトがリクエストを処理できないことを通知します。

https://github.com/ssllabs/ssllabs-scan/blob/master/ssllabs-api-docs-v3.md#error-response-status-codes

## 530 Site is frozen

Pantheon Systemsのウェブプラットフォームで使用され、非アクティブのために凍結されたサイトを示します。

https://web.archive.org/web/20170106011710/https://pantheon.io/docs/platform-considerations/

## 530 Origin DNS Error

Shopifyによって使用され、Cloudflareが要求されたDNSレコードを解決できないことを示す。

https://shopify.dev/docs/api/usage/response-codes

## 540 Temporarily Disabled

要求されたエンドポイントが一時的に無効になっていることを示すために Shopify によって使用される。

https://shopify.dev/docs/api/usage/response-codes

## 598 (Informal convention) Network read timeout error

いくつかのHTTPプロキシが、プロキシの後ろにあるネットワーク読み込みタイムアウトを プロキシの前にいるクライアントに知らせるために使う。

https://web.archive.org/web/20170107115008/http://www.ascii-code.com/http-status-codes.php

## 599 Network Connect Timeout Error

いくつかのHTTPプロキシが、プロキシの後ろにあるネットワーク接続のタイムアウトを、 プロキシの前にいるクライアントに知らせるために使うエラー。

## 783 Unexpected Token 

Shopifyによって、リクエストにJSON構文エラーが含まれていることを示すために使用される。

https://shopify.dev/docs/api/usage/response-codes

## 999 Non-standard

エラー999はLinkedInによって使用され、ブロック/ウォールされたり、最初にサインインしないとLinkedInのウェブページにアクセスできないことに関連しています。

https://learn.microsoft.com/en-us/archive/msdn-technet-forums/5a4f8eb5-bf1b-4776-b4bb-4baef621838f

## 参考資料

https://en.wikipedia.org/wiki/List_of_HTTP_status_codes#Unofficial_codes

## 最後に

明日は[@t-hiroyuki](https://qiita.com/t-hiroyuki)さんの「lookerを使用したバグと対策の管理方法」という記事です。お楽しみに！
RetailAIとトライアルではエンジニアを募集しています。
興味がある方はご連絡ください！

https://recruit.jobcan.jp/retail-ai/