2009-08-04 3 views
28

HTTP POSTリクエストでレスポンスボディを返すことができますか? HTTPの仕様に従って、

リソースが オリジンサーバ上に作成されている場合、応答は であるべきである201(作成される)と 要求のステータスを説明し、意味エンティティ を含みます新しい リソース、およびLocationヘッダー (セクション14.30を参照)に移動します。

これは、POSTリクエストがレスポンスボディのないLocationヘッダーで常にリダイレクトURIを送信する必要があることを意味しますか?

答えて

25

レスポンスボディを指定することもできます。は、同時にLocationヘッダーを使用します。 201レスポンスのLocationヘッダーを使用する場合、クライアントをリダイレクトしていないので、将来どこでリソースを見つけることができるかを伝えるだけです。

リダイレクトは3xx応答にのみ適用されます。

W3C docs for thisテキストは実際には非常に曖昧であるが、さらに説明:ロケーションレスポンスヘッダフィールドは要求の完了のためのRequest-URI以外の場所に受信者をリダイレクトするために使用される

又は新しいリソースの識別。 201(Created)レスポンスの場合、ロケーションはリクエストによって作成された新しいリソースのレスポンスです。 3xx応答の場合、ロケーションはリソースへの自動リダイレクションのためのサーバの優先URIを示すべきである(SHOULD)。

私は「...リダイレクト...または... identif [y] ...新しいリソース」と言っていますが、それはまったく平易な英語の文章ではありません。

+6

答えは何ですか?それは "言葉ではありません"、または "応答本文を指定して、同時にLocationヘッダーを使用できますか"ですか? –

+6

私はボディテキストの最後の質問に、タイトルの質問には返答しませんでした。 –

+0

私は同じ行を考えていました。ただ二重にしたいと思った。ありがとうございました。 –

12

そのような質問のためのリファレンスですparagraph 9.5 of the HTTP 1.1 specification、に基づいて、ここに私の理解である:

はいあなたがすることができ、及び仕様は、あなたが行うことができますし、それを行う方法かについて明確である:

POSTメソッドによって実行されたアクションによって、URIによって識別されるリソースが得られない場合があります。この場合、応答に結果を記述するエンティティが含まれているかどうかによって、200(OK)または204(No Content)のいずれかが適切な応答ステータスになります。

オリジンサーバ上にリソースが作成されている場合、レスポンスは201(Created)であり、要求のステータスを記述し、新しいリソースを参照するエンティティとLocationヘッダ(14.30節参照) 。

応答に適切なCache-ControlまたはExpiresヘッダーフィールドが含まれていない限り、このメソッドに対する応答はキャッシュできません。しかし、303(その他を参照)応答を使用して、キャッシュ可能なリソースを取得するようにユーザーエージェントに指示できます。

関連する問題