リソースがすでに存在する場合のPOSTのHTTP応答コード


842

クライアントがオブジェクトを保存できるサーバーを構築しています。これらのオブジェクトはクライアント側で完全に構築され、オブジェクトの存続期間全体にわたって永続的なオブジェクトIDを備えています。

クライアントがPUTを使用してオブジェクトを作成または変更できるように、APIを定義しました。

PUT /objects/{id} HTTP/1.1
...

{json representation of the object}

{id}はオブジェクトIDであるため、Request-URIの一部です。

ここで、クライアントがPOSTを使用してオブジェクトを作成できるようにすることも検討しています。

POST /objects/ HTTP/1.1
...

{json representation of the object, including ID}

POSTは「追加」操作を意図しているので、オブジェクトがすでにそこにある場合にどうすればよいかわかりません。リクエストを変更リクエストとして処理する必要がありますか、それともエラーコード(どちらか)を返す必要がありますか?


5
2016年6月の時点で、FBはメールが存在する場合、登録に露骨に200を設定します
Green

4
Github APIは、すでに使用されている名前でリソース(チーム/リポジトリ)を作成しようとすると422を返します
Ken

1
オブジェクトの存在をエラーと見なすかどうかによって異なります。追加を処理する場合、200または204が最も適切な応答コードです。
Suncat2000

回答:


1057

私の気持ちは409 Conflict最も適切ですが、もちろん自然界ではめったに見られません。

リソースの現在の状態との競合のため、要求を完了できませんでした。このコードは、ユーザーが競合を解決してリクエストを再送信できると予想される状況でのみ許可されます。レスポンスボディには、ユーザーが競合の原因を認識するのに十分な情報を含める必要があります(SHOULD)。理想的には、応答エンティティには、ユーザーまたはユーザーエージェントが問題を修正するのに十分な情報が含まれます。ただし、それは不可能である場合があり、必須ではありません。

競合は、PUTリクエストへの応答で発生する可能性が最も高いです。たとえば、バージョニングが使用されていて、PUTされているエンティティにリソースへの変更が含まれており、それが以前の(サードパーティ)リクエストによる変更と競合する場合、サーバーは409レスポンスを使用して、リクエストを完了できないことを示します。 。この場合、応答エンティティには、応答のContent-Typeで定義された形式で2つのバージョンの違いのリストが含まれている可能性があります。


11
400 Bad Requestに行ってみませんか?私にとって、これは検証エラーのように見えます(不正なIDで誤ったペイロードを提供しています)。
manuel aldana

314
400 => "不正な構文のため、サーバーはリクエストを理解できませんでした"。また、サーバーは完全に理解しますが、競合のために準拠できません。リクエストと構文に問題はなく、データの問題のみです。400を使用すると、データだけでなく、使用しているメカニズム全体に欠陥があるとすぐに信じられます。
Wrikken、2009

42
@Wrikkenそれはもはや正しくありません。HTTP 400に変更されたRFC 7231を意味する「サーバができないかではないでしょう起因するクライアントエラー(例えば、不正なリクエストの構文、無効な要求メッセージフレーミング、または欺瞞的要求ルーティング)であると認識されているものに、要求を処理します。」私は400が、この場合の正しい使用方法ですが、それは言っていませんでした 400の新しい定義で正しいこと
javajavajavajavajava

19
@javajavajavajavajava:それでも、データの重複は「クライアントエラー」ではありませんが、それは当然のことです。
Wrikken

21
私が返すHTTP 409Location、ヘッダは、既存の/矛盾のリソースを指します。
Gili

100

RFC 7231によると、POSTの処理結果が既存のリソースの表現と同等である場合は303 See Otherを使用できます


4
私の意見では、これはよく受け入れられた答えかもしれません。「MAY」は完全にオプションのアイテムを示しますが、これは公式のRFC 7231のドキュメントで提案されている唯一の応答コードです。
Nando

16
これが最もRESTfulな答えです。
セス

6
コンテキストは重要だと思います。たとえば、303を返すことは、見つかったリソースへのリダイレクトが必要であることを意味します。サーバー間の呼び出しではそれは理にかなっていますが、ユーザー登録プロセスを実行している場合は、まったく意味がありません。
Sinaesthetic

11
申し訳ありませんが、私はこれに反対票を投じています。HTTP 300はリダイレクトに関するものであり、おそらく異なるプロパティを持つ別のオブジェクトへのリダイレクトは非常に誤解を招くでしょう。
Michael Scheper 2017年

6
申し訳ありません。ただし、表現が既存のリソースと同等である場合、どのようにして異なるプロパティを持つことができますか?そして、それがあったとしても、リダイレクトはどのように誤解を招くでしょうか?OPは言う:オブジェクトが既にそこにある場合、私は何をすべきかわかりません。それは実際には「同じ」オブジェクトです。リダイレクトが誤解を招くのはなぜですか?あなたは、OPの心の中で明らかにそうではない別のオブジェクトについて話しています。
Nullius

86

個人的に私はWebDAV拡張を使い422 Unprocessable Entityます。

RFC 4918によると

422 Unprocessable Entityステータスコードは、サーバは、要求エンティティ(ひいてはのコンテンツタイプを理解する意味415 Unsupported Media Typeステータスコードが不適切である)、および要求エンティティの構文が(従って正しい400 Bad Requestステータスコードが不適切である)が、含まれる命令を処理できませんでした。


19
これは興味深い考えであり、最終的にWebDAV RFCを読むよう促されました。ただし、422の意味は、リクエストと含まれているエンティティは構文的には正しいが、意味的には意味がなかったということです。
vmj

4
不正な形式のJSONは構文的に正しいエンティティではないため、422奇妙なことにストライキが発生します...
awendt

7
私はこれで行きません。回答で参照されているのと同じURLから:「たとえば、このエラー条件は、XMLリクエストの本文に整形式(つまり、構文的に正しい)が含まれているが、意味的に誤ったXML命令が含まれている場合に発生する可能性があります。」これは、有効な構文とセマンティクスで完全に有効なリクエストエンティティを送信する場合とは異なり、処理できないエンティティの本当の意味ですが、唯一の問題は、既存のエンティティと競合することです。実際、リクエストエンティティのセマンティクスが有効でない場合、同様の既存のエンティティはまったく存在しないはずです。
Tamer Shlash、2015

1
Tamerのコメントに追加して、2番目のリクエストが最初に来た場合、それは成功しますが、それが意味的に正しい場合は不可能です。したがって、正しい意味ではここでは適用されません。
2016

4
@テイマーなぜそうですか?コマンド「オブジェクトxyを作成してください」は構文的に正しいです。オブジェクトxyを作成できる場合にのみ、意味的に正しいです。オブジェクトxyがすでに存在する場合は作成できません。したがって、これはセマンティックエラーです。
Hagen von Eitzen 2017

48

すべてはコンテキストに関するものであり、リクエストの重複の処理を担当するのは誰(サーバーまたはクライアント、あるいはその両方)


サーバーが複製をポイントするだけの場合は、4xxを見てください。

  • 400 Bad Request-明らかなクライアント障害のため、サーバーがリクエストを処理しない場合
  • 409競合-サーバーが要求を処理しないが、その理由はクライアントの障害ではない場合
  • ...

以下のために暗黙の重複の取り扱い、2XXを見て:

  • 200 OK
  • 201作成されました
  • ...

サーバーが何かを返すこと予想される場合は、3XXを見てください。

  • 302見つかりました
  • 303他を見る
  • ...

サーバーが既存のリソースをポイントできる場合、リダイレクトを意味します。


上記では不十分な場合は、応答の本文にエラーメッセージを準備することをお勧めします。


2
リクエストはリソースを複製するのではなく、リソースにデータを追加しています。私の意見では、あなたの答えがすべての答えです。
Suncat2000

28

ゲームの後期かもしれませんが、REST APIを作成しようとしたときにこのセマンティクスの問題に遭遇しました。

Wrikkenの答えを少し拡張するには、どちらか、409 Conflictまたは403 Forbidden状況に応じて使用できると思います。つまり、ユーザーが競合を解決してリクエストを完了するために何もできない場合は、403エラーを使用します(たとえば、DELETEリソースを明示的に削除するリクエスト)、または何かが実行される可能性がある場合は409を使用します。

10.4.4 403 Forbidden

サーバーはリクエストを理解しましたが、リクエストの実行を拒否しています。承認は役に立たず、リクエストは繰り返されるべきではありません。リクエストメソッドがHEADではなく、サーバーがリクエストが実行されなかった理由を公開したい場合は、エンティティで拒否の理由を説明する必要があります。サーバーがこの情報をクライアントに提供したくない場合は、代わりにステータスコード404(見つかりません)を使用できます。

今日では、誰かが「403」と言って、権限または認証の問題が頭に浮かびますが、仕様では、基本的にサーバーがクライアントにそれを実行しないことを伝えていることを再確認しないでください。ない

用としてPUTPOST... POSTユーザが手段を持たないか、リソースの識別子を作成するべきではないリソースの新しいインスタンスを作成するために使用されなければなりません。PUTリソースのIDがわかっている場合に使用されます。

9.6 PUT

...

POST要求とPUT要求の基本的な違いは、Request-URIの異なる意味に反映されています。POSTリクエストのURIは、囲まれたエンティティを処理するリソースを識別します。そのリソースは、データ受け入れプロセス、他のプロトコルへのゲートウェイ、または注釈を受け入れる個別のエンティティである可能性があります。対照的に、PUTリクエストのURIは、リクエストに含まれるエンティティを識別します。ユーザーエージェントは、意図するURIを認識しており、サーバーは他のリソースへのリクエストの適用を試みてはいけません。サーバーがリクエストを別のURIに適用したい場合は、

301(永久に移動)応答を送信する必要があります。次に、ユーザーエージェントは、リクエストをリダイレクトするかどうかについて独自の決定を行うことができます。


7
403 Forbiddenは、ユーザーが認証されていても、要求されたアクションを実行する権限がないことを意味していると思います。検証エラーには使用しません。:ログインしていないため、何かを削除しようとしています。サーバーから401 Unauthorizedが送られてきます(名前が間違っているため、401 Unauthenticatedである必要があります)。ログインしてもう一度お試しください。今回サーバーは私の許可をチェックし、私が許可されていないことを確認し、403 Forbiddenを返します。こちらの質問もご覧ください。
Stijn de Witt

うーん...本当です。ここでの考えは、権限がOPのユースケースでリソースを不変にすることをユーザーに伝えることへのジャンプでした-それはすでに存在しています。競合を解決するために何かをする権限がありません。リソースを再度作成しないでください。
p0lar_bear

3
仕様によると、エラー409は、ターゲットリソースPOSTと競合する場合に返される必要があると記載されているため、リクエストによって(正しく使用された場合)返されないことを意味します。ターゲットリソースはまだ投稿されていないため、競合する可能性はありません。したがって、返信しても意味がありません。409 Conflict
Grant Gryczan

1
「409エラーはPUTリクエストへの応答で発生する可能性POST最も高い」ので、実際には409エラーがから返されないことはないと思います。他のリクエストメソッドもこのコードを使用できることを示しているようです。さらに、「レスポンスの本文に、ユーザーが競合の原因を認識するのに十分な情報含まれている必要があります。理想的には、レスポンスエンティティには、ユーザーまたはユーザーエージェントが問題を修正するのに十分な情報が含まれますが、これは不可能である可能性があります。必要ありません。」(webdav.org/specs/rfc2616.html#status.409
JWAspin

14

「302 Found」は私にとって論理的に聞こえます。また、RFC 2616には、GETおよびHEAD以外のリクエストでも応答できると記載されています(これには確かにPOSTが含まれます)。

ただし、RFCにより、訪問者がこの「見つかる」リソースを取得するためにこのURLにアクセスすることはできます。実際の「見つかった」URLに直接移動するには、「303 See Other」を使用する必要があります。これは理にかなっていますが、次のURLを取得するために別の呼び出しを強制します。良い面として、このGETはキャッシュ可能です。

「303 See Other」を使用すると思います。本文で見つかった「もの」で応答できるかどうかはわかりませんが、サーバーへの1回の往復を節約するためにそうしたいと思います。

更新: RFCを再度読んだ後でも、存在しない "4XX + 303 Found"コードが正しいはずです。ただし、「409 Conflict」は(@Wrikkenが指す)最良の既存の回答コードであり、おそらく既存のリソースを指すLocationヘッダーを含みます。


88
3xxステータスはリダイレクト用です
Aviram Netanel 2014

1
「リクエストされたリソースは一時的に別のURIに存在します。」w3.org/Protocols/rfc2616/rfc2616-sec10.html
statueofmike

1
IMHO、「307 Temporary Redirect」は、実際の一時的なリダイレクトです。「302」はあいまいですが、「FOUND !!」です。ここで本当に望まれるメッセージです 明確な妥協案は、HTTPセマンティクスの「303 See Other」です。「303 See Other」で行きます。
alanjds 2014

@DavidVartanian Hum ...ここにエラーは表示されません。クライアントは正しい要求を送信しますが、「申し訳ありませんが、ここで作成しようとしているものはすでに存在します」と言う方法は?いくつかの3xxの仕事のようです。クライアントエラーがないので、私にとっては4xxではありません。
alanjds 2015

1
@DavidVartanian議論をありがとう。409への回答を更新しました。それが不可能であることを知らなくても、クライアントは不可能なことを求めるのは間違っています。
alanjds

11

私はあなたがこれをするべきではないと思います。

ご存知のように、POSTはコレクションを変更するためのもので、新しいアイテムを作成するために使用されます。したがって、IDを送信する場合(これは良い考えではないと思います)、コレクションを変更する必要があります。つまり、アイテムを変更しますが、混乱を招きます。

IDなしでアイテムを追加するために使用します。これがベストプラクティスです。

(IDではなく)UNIQUE制約をキャプチャする場合は、PUTリクエストの場合と同様に、409を応答できます。しかし、IDではありません。


結合テーブル関係を持つオブジェクトはどうですか?データベーステーブルとしてaccount、product、account_productがあるとします。アカウントに商品を追加したいので、product_idを使用して/ account / {id} / productに投稿します。アカウントと製品の関係が1つだけ許可されている場合、何を返せばよいですか?
partkyle 2014年

2
データベーステーブルを忘れます。製品はアカウントにのみ関連付けることができるとしましょう...そして、それは1対多の関係です。したがって、POST / product / {id}と{'account':account_id}を使用します。最大カーディナリティを「1」に設定している場合(1対1の関係)...なぜレストオブジェクトが分離されているのですか?カーディナリティのエラーは400エラーになります。複雑にしないでおく。私はあなたの質問を理解したことを望みます。
Alfonso Tienda 2014年

私もこの質問を投げかけただけで、IDはデータベースのテクニカルIDではなく、会社コードのようなものです。このアプリケーションでは、マネージャユーザーは会社を作成でき、コードを提供する必要があります。DBテーブルにも技術IDがあるにもかかわらず、これはユーザーの会社IDです。したがって、私の場合、同じ会社コードがすでに存在する場合は409を返します。
AlexCode 2014年

@partkyle PKをパブリックIDとして使用しないでください。
Sinaesthetic

一部のエンティティには、IDだけでなく一意の制約があります。アカウントと同様に、ユーザーがユーザー名を提供しない場合はアカウントを作成できません。そして、ユーザー名のないアカウントを追加することは明らかに不可能です
ロケットスペーサー2016年

9

私は行くだろう422 Unprocessable Entity要求が無効であるが、問題は構文または認証していないときに使用されます、。

他の回答に対する反対意見として、4xxエラー以外のコードを使用することは、それがクライアントエラーではないことを意味します。4xxエラー以外のコードを使用してクライアントエラーを表すことは、まったく意味がありません。

409 Conflictここでそれが最も一般的な答えのようですが、仕様によると、これはリソースがすでに存在し、それに適用する新しいデータが現在の状態と互換性がないことを意味します。あなたが送信している場合POSTたとえば、すでに使用されているユーザー名を使用して、ターゲットリソース(作成しようとしているリソース)がまだポストされていないため、実際にはターゲットリソースと競合していません。保存されているリソースのバージョンと要求されたリソースのバージョンの間に矛盾がある場合、これは特にバージョン管理のエラーです。これは、クライアントが古いバージョンのリソースをキャッシュし、条件付きで有効ではなくなった誤ったバージョンに基づいてリクエストを送信する場合など、その目的に非常に役立ちます。「この場合、応答の表現には、変更履歴に基づいて差異をマージするのに役立つ情報が含まれている可能性があります。」そのユーザー名で別のユーザーを作成する要求は、バージョン管理とは関係なく、単に処理できません。

記録では、422は、すでに使用されている名前でリポジトリを作成しようとしたときにGitHubが使用するステータスコードでもあります。


422はwebdav仕様なので、REST APIに使用することはお勧めしません
rwenz3l

7

RESTの場合、その特定のシステムの動作を決定する必要があるだけだと思います。その場合、「正しい」答えは、ここに示されている2つの答えのうちの1つだと思います。リクエストを停止して、クライアントがミスしてから続行する前に修正する必要があるかのように動作させる場合は、409を使用します。競合がそれほど重要ではなく、リクエストを続行したい場合は、リダイレクトして応答します。見つかったエンティティへのクライアント。とにかく、適切なREST APIはPOST後のそのリソースのGETエンドポイントにリダイレクト(または少なくともロケーションヘッダーを提供)する必要があるので、この動作により一貫したエクスペリエンスが得られます。

編集:IDを提供するので、PUTを検討する必要があることにも注意する価値があります。その場合の動作は単純です。「現在何があるか気にしないので、これをそこに置いてください。」つまり、何もない場合は作成されます。何かがある場合は置き換えられます。サーバーがそのIDを管理する場合は、POSTの方が適切だと思います。2つの概念を分けると、基本的には対処方法がわかります(つまり、PUTはべき等であるため、ペイロードが検証される限り常に機能し、POSTが常に作成されるため、IDの衝突がある場合、409はその競合を説明します) 。


仕様によると、エラー409は、ターゲットリソースPOSTと競合する場合に返される必要があると記載されているため、リクエストによって(正しく使用された場合)返されないことを意味します。ターゲットリソースはまだ投稿されていないため、競合する可能性はなく、したがって、409 Conflictません。ても意味がありません。
Grant Gryczan

議論の余地のあるイモ。/ usersに投稿すると、リソースは個々のレコード/ users / {id}ではなくコレクションになります。
Sinaesthetic

保存されているリソースのバージョンと要求されたリソースのバージョンの間に矛盾がある場合、これは特にバージョン管理のためのエラーです。これは、クライアントが古いバージョンのリソースをキャッシュし、条件付きで有効ではなくなった誤ったバージョンに基づいてリクエストを送信する場合など、その目的に非常に役立ちます。「この場合、応答の表現には、改訂履歴に基づいて差異をマージするのに役立つ情報が含まれている可能性があります。」
Grant Gryczan

でも私はあなたの提案を気に入っていますPUT
Grant Gryczan

4

もう1つの潜在的な治療法は、結局のところPATCHの使用です。PATCHは、内部状態を変更するものとして定義され、追加に限定されません。

PATCHは、既存のアイテムを更新できるようにすることで問題を解決します。参照:RFC 5789:PATCH


2
パッチはPUTに似ていますが、完全な置き換えではありません。リソース全体を置き換えるのではなく、リソースの単一の要素を追加、削除、または変更するなど、リソースの一部を変更するために使用されます。
Sinaesthetic

4

なぜ202は受け入れられないのですか?それはOKリクエスト(200秒)であり、クライアントエラー(400秒)はありませんでした。

10のステータスコードの定義

「202 Accepted。リクエストは処理のために受け入れられましたが、処理は完了していません。」

...すでに存在するため、完了する必要はありませんでした。クライアントはそれがすでに存在していることを知りません、彼らは何も間違っていませんでした。

私は202をスローし、GET /{resource}/{id}が返すものと同様のコンテンツを返すことに頼っています。


21
この答えは間違っています。202は、サーバーが要求の問題を検出しなかったが、応答後に要求を処理することを選択したことを意味します。また、処理が成功することを期待しています。私たちの場合、サーバーは処理が失敗することを知っているので、202は間違った応答です。
エイドリアン

4
202の例は、キューまたはサブスクリプションです。つまり、今すぐクエリを実行した場合、リクエストの結果がすぐに利用できない場合があります。
Sinaesthetic 2016年

1
これは、サーバーがまだ要求を処理している場合に適しています。200または204がより一般的です。OPが追加要求を行っているため、オブジェクトの存在は予期される状態であり、エラーではありません。
Suncat2000

要求が受け入れられなかったことがすでにわかっているため、要求が受け入れられたとクライアントに言っても意味がありません。
lucastamoios

1
@Adrianとlucastamoiosは、サーバーが応答を提供する前に、データベースから同期的に読み取ることを前提としていると思います。これは常に当てはまるとは限らないため、サーバーが既存のレコードを常に「認識」しているわけではないため、この答えは「間違った」ものではありません。これは、APIレイヤーがバックグラウンドワーカーによる処理のリクエストを単純に記録する非同期システムの場合によく当てはまります。
gsaslis

2

重複するレコードの正しいコードをチェックしているときに、この質問に遭遇しました。

私の無知を許してください。しかし、なぜ「複数選択」または「あいまい」と明確に述べているコード「300」を誰もが無視しているのか理解できません。

私の意見では、これは非標準または独自の使用のための特定のシステムを構築するのに最適なコードでしょう。私も間違っている可能性があります!

https://tools.ietf.org/html/rfc7231#section-6.4.1


私の理解:「ステータスコードは、ターゲットリソースに複数の表現があることを示しています...ユーザー(またはユーザーエージェント)がリクエストをそれらの1つ以上にリダイレクトすることによって優先表現を選択できるように、代替に関する情報が提供されています識別子」は、明示的に複数の表現を防止しようとしています。オプションはありません。クライアントが選択できる代替手段はありません。クライアントは別のIDで再送信する必要があります。そうは言っても、一意のIDをクライアントとサーバーのどちらで生成するかについても検討する必要があります。
musicin3d 2017

意味的には、クライアントは「これを作成する」と言っており、サーバーは「代わりにここに行く」と言って応答しています。会話は意味がありません。まるでサーバーがクライアントに「代わりにこの場所に投稿する」ように指示しているようです。300は、サーバーが「Ok I
create

2

より可能性が高い 400 Bad Request

6.5.1。400不正な要求


400(Bad Request)ステータスコードは、クライアントエラーであると認識される何か(たとえば、不正な形式の要求構文、無効な要求メッセージのフレーミング、または不正な要求ルーティング)により、サーバーが要求を処理できない、または処理しないことを示します。

リクエストに重複する値(すでに存在する値)が含まれているため、クライアントエラーとして認識される可能性があります。次の試行の前に要求を変更する必要があります。
これらの事実を考慮することにより、HTTP STATUS 400 Bad Requestと結論付けることができます。


1
Bad Requestは、パケットの構文に固有の問題があることを意味します。(リソースがすでに存在しないような)、別のコンテキストでは、パケットが成功するなら、それはエラー400を返すべきではない
グラントGryczan

1

208- http://httpstatusdogs.com/208-already-reportedはどうですか?それはオプションですか?

私の意見では、繰り返しリソースのみが存在する場合、エラーは発生しません。結局のところ、クライアント側でもサーバー側でもエラーは発生しません。


idが既に存在する特定のアイテムを追加するため、これはオプションではありません。だからあなたは何かを追加しようとしますが、これはすでにそこにあります。OKは、データセットが拡大した場合にのみ適用されます。何かを追加-> OK何も追加しませんでした。合わないと思います。
Martin Kersten、2015

私が言ったように、私はこれがエラーであるとは思いません。しかし、@ martinのポイントがわかります
フェルナンドフェレイラ

リソースが正常に作成されない場合、定義によりエラーが発生します。
Grant Gryczan

POSTは、データの追加にも使用されます。これは定義によるものあり、エラーはありません
Suncat2000

@ Suncat2000その場合でも、データが正常に追加されない場合でもエラーが発生します。リソースがすでに存在する場合、データは追加されません。
Grant Gryczan

0

あなたの場合、あなたは使うことができます 409 Conflict

HTTPs下のリストから別のステータスコードを確認する場合

1××情報

100 Continue
101 Switching Protocols
102 Processing

2××成功

200 OK
201 Created
202 Accepted
203 Non-authoritative Information
204 No Content
205 Reset Content
206 Partial Content
207 Multi-Status
208 Already Reported
226 IM Used

3××リダイレクト

300 Multiple Choices
301 Moved Permanently
302 Found
303 See Other
304 Not Modified
305 Use Proxy
307 Temporary Redirect
308 Permanent Redirect

4××クライアントエラー

400 Bad Request
401 Unauthorized
402 Payment Required
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable
407 Proxy Authentication Required
408 Request Timeout
409 Conflict
410 Gone
411 Length Required
412 Precondition Failed
413 Payload Too Large
414 Request-URI Too Long
415 Unsupported Media Type
416 Requested Range Not Satisfiable
417 Expectation Failed
418 I’m a teapot
421 Misdirected Request
422 Unprocessable Entity
423 Locked
424 Failed Dependency
426 Upgrade Required
428 Precondition Required
429 Too Many Requests
431 Request Header Fields Too Large
444 Connection Closed Without Response
451 Unavailable For Legal Reasons
499 Client Closed Request

5××サーバーエラー

500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported
506 Variant Also Negotiates
507 Insufficient Storage
508 Loop Detected
510 Not Extended
511 Network Authentication Required
599 Network Connect Timeout Error
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.