---
title: HTTPステータスコード 完全に理解した
tags:  #http #ステータスコード #api #web  
author: [星影](https://www.docswell.com/user/unsoluble_sugar)
site: [Docswell](https://www.docswell.com/)
thumbnail: https://bcdn.docswell.com/page/ZPJR53RE9L.jpg?width=480
description: 『完全に理解した人達の「Web技術」Talk　#2 』の発表スライドです https://easy2.connpass.com/event/167520/
published: March 09, 21
canonical: https://www.docswell.com/s/unsoluble_sugar/MK33VK-2021-03-09-145549
---
# Page. 1

![Page Image](https://bcdn.docswell.com/page/ZPJR53RE9L.jpg)

HTTPステータスコード 完全に理解した

# Page. 2

![Page Image](https://bcdn.docswell.com/page/NPEXK4YJXY.jpg)

@unsoluble_sugar TOPGATE, Inc. Leader/Engineer

# Page. 3

![Page Image](https://bcdn.docswell.com/page/63EK5Z4JDY.jpg)

https://unsolublesugar.com

# Page. 4

![Page Image](https://bcdn.docswell.com/page/4L73KDD75P.jpg)

https://qiita.com/unsoluble_sugar

# Page. 5

![Page Image](https://bcdn.docswell.com/page/V87D3P2JGD.jpg)

😉 HTTP ステータスコード 完全に理解してますか？

# Page. 6

![Page Image](https://bcdn.docswell.com/page/4VJP4NL786.jpg)

🤔 聞いたことある 😁 完全に理解した 😩 何もわからない 😃 チョットデキル

# Page. 7

![Page Image](https://bcdn.docswell.com/page/L2EVXK6JQW.jpg)

HTTPステータスコードとは • 厳密にはHTTPレスポンスのステータスコード • サーバからのレスポンスの意味を表す3桁の数字コードのこと • 特定のHTTPリクエストが正常に完了したかを示す

# Page. 8

![Page Image](https://bcdn.docswell.com/page/Z57GVQ27LR.jpg)

HTTPレスポンス レスポンスメッセージは大きく３種類の情報に分けられる ステータスライン （プロトコル, ステータスコード, テキストフレーズ） HTTPレスポンスヘッダ HTTPレスポンスボディ

# Page. 9

![Page Image](https://bcdn.docswell.com/page/V4EQ6K9EP5.jpg)

ステータスコードはヘッダ1行目 HTTP/1.1 200 OK Date: Sat, 22 Feb 2020 08:09:30 GMT Content-Type: application/json; charset=utf-8 Connection: keep-alive Server: nginx ETag: &quot;e287c729017cc9785487098b6b103af6&quot; Cache-Control: max-age=0, private, must-revalidate X-UA-Compatible: IE=Edge,chrome=1 X-Runtime: 0.003487

# Page. 10

![Page Image](https://bcdn.docswell.com/page/DKJ44KRJ1Q.jpg)

ステータスコードは5つのクラスに分類 100番台：🧐情報レスポンス 200番台：😊成功レスポンス 300番台：😏リダイレクト 400番台：😫クライアントエラー 500番台：😇サーバエラー

# Page. 11

![Page Image](https://bcdn.docswell.com/page/PLE14XVEGD.jpg)

🧐 100番台 情報レスポンス

# Page. 12

![Page Image](https://bcdn.docswell.com/page/8GEWXN3726.jpg)

100番台 • 処理が継続していることを示す • クライアントはそのままリクエストを継続するか、サーバーの 指示に従ってプロトコルをアップデートして再送信する • HTTP/1.0規約に1xx番号の定義がないため、100番台はあまり 利用されない

# Page. 13

![Page Image](https://bcdn.docswell.com/page/W47Z63G73Y.jpg)

100番台 • 100 Continue サーバがリクエストの受信をし拒否していない。クライアント はリクエストを継続できる • 101 Switching Protocols サーバはプロトコルの切り替えを要求している

# Page. 14

![Page Image](https://bcdn.docswell.com/page/KYJ62XQ7VZ.jpg)

😊 200番台 成功レスポンス

# Page. 15

![Page Image](https://bcdn.docswell.com/page/5GJ52X2J48.jpg)

200 OK • 成功時に返すステータスコードとして最も多用される • リクエストした処理が成功、指定したデータの取得に成功 • GET：ボディにリソースが含まれる • PUT, POST：ボディに処理結果が含まれる

# Page. 16

![Page Image](https://bcdn.docswell.com/page/4LE3KX1E5P.jpg)

201 Created • POST, PUT：リクエストが成功しリソースが作成された • POSTの場合はレスポンスのLocationヘッダにURIが入る • ユーザー新規登録、画像アップロード、DBのテーブル追加など • ボディには新しく作成したリソースを入れることが多いが、特 に何も入れなくても良い

# Page. 17

![Page Image](https://bcdn.docswell.com/page/V8ED32K7GD.jpg)

202 Accepted • リクエストは受理されたが、まだ処理が完了していない • ファイル形式の変換やプッシュ通知のリクエスト、バッチ処理 など、サーバ側で非同期に行う処理がある場合に返す

# Page. 18

![Page Image](https://bcdn.docswell.com/page/4V7P413E86.jpg)

204 No Content • レスポンスボディが空のときに返す • DELETEでデータ削除を行った際に返す • POSTでフォーム内容を送信したが画面更新がない場合 • PUTやPATCHで正しくデータ更新された場合 • DELETE以外ではあまり使うべきではないという意見もある

# Page. 19

![Page Image](https://bcdn.docswell.com/page/L2JVXYN7QW.jpg)

205 Reset Content • ユーザーエージェントの画面をリセットする場合に返される • 204と同じくレスポンスボディはなし

# Page. 20

![Page Image](https://bcdn.docswell.com/page/Z5EGV95ELR.jpg)

😏 300番台 リダイレト

# Page. 21

![Page Image](https://bcdn.docswell.com/page/V4JQ6WLJP5.jpg)

300 Multiple Choices • リクエストに対して複数のレスポンスがあることを示す • 選択肢へリンクするHTMLが提示され、ユーザーエージェント やユーザーはそれらからひとつを選択する

# Page. 22

![Page Image](https://bcdn.docswell.com/page/DK744K571Q.jpg)

301 Moved Permanently • リクエストされたリソースのURLが恒久的に変更された • Webサイトの移転や、HTTPからHTTPSへのリダイレクトなど • Locationヘッダに移動先のURLが示される

# Page. 23

![Page Image](https://bcdn.docswell.com/page/PLJ14X2JGD.jpg)

302 Found • リクエストされたリソースのURLが一時的に変更された • Locationヘッダに移動先のURLが示される • 実際は303の用途で使われることが多く、307として再定義さ れたため現在は推奨されていない

# Page. 24

![Page Image](https://bcdn.docswell.com/page/8GJWXN2E26.jpg)

303 See Other • リクエストされたリソースを別のURIで取得できることを示す • Locationヘッダに移動先のURLが示される • ブラウザのフォームからPOSTで処理を行ったレスポンスとし て、結果画面にリダイレクトするときに使う

# Page. 25

![Page Image](https://bcdn.docswell.com/page/W4EZ634E3Y.jpg)

307 Temporary Redirect • 一時的リダイレクト • 302の規格外な使用法が横行したため再定義したもの • Locationヘッダに移動先のURLが示される • ユーザーエージェントは使用するHTTPメソッドを変更してはな らない

# Page. 26

![Page Image](https://bcdn.docswell.com/page/KY762XGEVZ.jpg)

308 Permanent Redirect • 恒久的リダイレクト • 301の規格外な使用法が横行したため再定義したもの • Locationヘッダに移動先のURLが示される • ユーザーエージェントは使用するHTTPメソッドを変更してはな らない

# Page. 27

![Page Image](https://bcdn.docswell.com/page/5G752XX748.jpg)

😫 400番台 クライアントエラー

# Page. 28

![Page Image](https://bcdn.docswell.com/page/V9J24XQ7RX.jpg)

400 Bad Request • リクエストが不正 • 定義されていないメソッドを使ったり、パラメータに間違いが あるなど、クライアントのリクエストがおかしい場合 • ほかに適切なクライアントエラーを示すステータスコードがな い場合にも用いる

# Page. 29

![Page Image](https://bcdn.docswell.com/page/5DEYM8YEM9.jpg)

401 Unauthorized • 認証エラー • ログインが必要なページでIDやパスワードを間違えた場合 • リクエストに必要なAuthorizationヘッダを含まない場合 • トークンが失効、破損しているなど不正な場合

# Page. 30

![Page Image](https://bcdn.docswell.com/page/2VJNWQRJ8K.jpg)

403 Forbidden • 認可エラー • 許可されていないなどの理由でクライアントのアクセス権限が なく、サーバからのレスポンスが拒否された • 特定のIPアドレスのみからアクセスできる場合などに用いる • 401とは異なり、クライアントの識別はされている

# Page. 31

![Page Image](https://bcdn.docswell.com/page/GYE9XDZ73P.jpg)

404 Not Found • リクエストされたリソースが存在しない • Webで頻繁に見られる有名なエラーステータスコードのひとつ • そもそもURI自体が存在しないのか、取得対象のリソースが存在しなかっ たのかなど、詳細情報を示す必要がある • 許可されていないクライアントからリソースの存在を隠すため、 403の 代わりに404を返すこともある

# Page. 32

![Page Image](https://bcdn.docswell.com/page/5GE825YEDR.jpg)

405 Method Not Allowed • エンドポイントは存在するが許可されていないHTTPメソッド • GETでアクセス可能な検索APIをPOSTで使用しようとした場合 • APIがリソースのDELETEを禁止している場合

# Page. 33

![Page Image](https://bcdn.docswell.com/page/MLEL2Y97R1.jpg)

408 Request Timeout • 指定時間内にリクエストが完了しなかった • Chrome、Firefoxなど、閲覧を高速化するためのHTTP事前接続 機能を使用するブラウザでよく使用される • 回線の接続速度が低下している場合などに発生

# Page. 34

![Page Image](https://bcdn.docswell.com/page/54JM8NVJW1.jpg)

409 Conflict • リソースの競合が発生した場合 • すでに存在するメールアドレスや同一IDのユーザー登録を行お うとした時 • 空ではないディレクトリを削除しようとしたり、リソースの名 前をすでに他で使われているものに変更しようとした時など

# Page. 35

![Page Image](https://bcdn.docswell.com/page/ZPJR5DWE9L.jpg)

410 Gone • リクエストされたコンテンツがサーバから永久に削除され、転送先アドレス がない場合 • 404と違い「かつて存在していたが今はもう存在していない」ことを表す • 期間限定のプロモーションサイトなどで利用することを意図している • ユーザー情報を扱うAPIで410を返す仕様は、個人情報保護の観点から問題視 される可能性もある（削除したという情報を保持している 完全に削除されて いない）

# Page. 36

![Page Image](https://bcdn.docswell.com/page/NPEXK1VJXY.jpg)

413 Payload Too Large • リクエストヘッダ、ボディがサーバで定めている上限を超えて いることを示す • 許容サイズ以上のファイルアップロードが行われた時など • サーバはコネクションを閉じるか、Retry-After ヘッダを返す

# Page. 37

![Page Image](https://bcdn.docswell.com/page/63EK525JDY.jpg)

414 URI Too Long • クライアントがリクエストしたURIが、サーバで扱える長さを 超えている • クエリパラメータに長過ぎるデータが指定された時など

# Page. 38

![Page Image](https://bcdn.docswell.com/page/4L73K4175P.jpg)

415 Unsupported Media Type • リクエストされたデータのメディア形式（Content-Type）に サーバーが対応しておらず、サーバがリクエストを拒否した • JSONリクエストしか受け取れないAPIにXMLが送られた、サ ポートする画像形式以外の画像をアップロードしようとした時 など

# Page. 39

![Page Image](https://bcdn.docswell.com/page/V87D3QKJGD.jpg)

429 Too Many Requests • アクセス回数が許容範囲の限界を超えた場合に返す • 2012年にRFC6585で定義された新しいステータスコード • 一定の時間内にレートリミットを超える大量のリクエストを送 信した（例：1分間に60回などのAPIリクエスト制限）

# Page. 40

![Page Image](https://bcdn.docswell.com/page/4VJP4L3786.jpg)

😇 500番台 サーバエラー

# Page. 41

![Page Image](https://bcdn.docswell.com/page/L2EVXQNJQW.jpg)

500 Internal Server Error • サーバ側に何らかの異常が発生し正常なレスポンスが返せない • 「何らかの異常が発生しました」的なエラーメッセージが返る ことが多く、クライアント側では解決不能 • ほかに適切なエラーコードがない場合にも用いる • サーバーのエラーログを見れば原因がわかるかも

# Page. 42

![Page Image](https://bcdn.docswell.com/page/Z57GVW57LR.jpg)

502 Bad Gateway • ゲートウェイまたはプロキシに問題が発生している • ゲートウェイとして動作するサーバが無効なレスポンスを受け 取った

# Page. 43

![Page Image](https://bcdn.docswell.com/page/V4EQ63LEP5.jpg)

503 Service Unavailable • サーバがリクエストを処理する準備ができていない状態 • 一時的なアクセス集中やメンテナンスによりサーバがダウンし ている • メンテナンスの場合は、Retry-Afterヘッダに再開予定時期（お よそ何秒後か）を含めることもできる

# Page. 44

![Page Image](https://bcdn.docswell.com/page/DKJ4415J1Q.jpg)

504 Gateway Timeout • ゲートウェイとして動作するサーバが指定時間内にレスポンス を得られなかった • サイト移行などによる一時的なDNS異常の場合も

# Page. 45

![Page Image](https://bcdn.docswell.com/page/PLE14G2EGD.jpg)

505 HTTP Version Not Supported • リクエストしたHTTPプロトコルのバージョンにサーバが対応し ていない

# Page. 46

![Page Image](https://bcdn.docswell.com/page/8GEWXK2726.jpg)

😌

# Page. 47

![Page Image](https://bcdn.docswell.com/page/W47Z6Z473Y.jpg)

まとめ 🤗ステータスコードを意識した設計を行うことで サーバとクライアント間の開発がスムーズに進む 😂不適切なステータスコードを割り当ててしまうと クライアント側が混乱し、システム全体の挙動に支障をきたすことも… 😊ステータスコードを理解することで 問題の切り分けや判断がしやすくなる

# Page. 48

![Page Image](https://bcdn.docswell.com/page/KYJ62ZG7VZ.jpg)

参考書籍 Webを支える技術 ─ HTTP、URI、HTML、そしてREST 山本陽平 著（WEB+DB PRESS plus） 2010年4月 発行 Web API: The Good Parts 水野 貴明 著（オライリージャパン） 2014年11月 発行

# Page. 49

![Page Image](https://bcdn.docswell.com/page/5GJ52WXJ48.jpg)

参考URL • HTTP レスポンスステータスコード - HTTP | MDN https://developer.mozilla.org/ja/docs/Web/HTTP/Status • IETF Documents https://tools.ietf.org/html/ • HTTPステータスコード - Wikipedia https://ja.wikipedia.org/wiki/HTTPステータスコード

# Page. 50

![Page Image](https://bcdn.docswell.com/page/V9E24QQJRX.jpg)

😁 HTTP ステータスコード 完全に理解した？

