0

HTTP 303は他の HTTP メソッドで受け入れられますか? HTTP 303を他の HTTP メソッドに使用できることを確認しました。

Post/Redirect/Getパターンでは、サーバーが を返す前に操作を実行する必要がありますHTTP 303HTTP PUTこれとDELETE他のタイプのリダイレクトについても同じことが言えますか? サーバーは、リダイレクトの前に操作を実行する必要がありますか? それとも、クライアントが必要に応じて正規の URL でリクエストを繰り返すと想定できますか?

これは、リダイレクトが負荷分散によく使用されるという事実を考慮すると、さらに興味深いものになります。

4

1 に答える 1

0

RESTful Web サービスのページ 378を引用します。

303 ("See Other")

リクエストは処理されましたが、サーバーが応答ドキュメントを送信する代わりに、クライアントに応答ドキュメントの URI を送信しています。これは、静的ステータス メッセージへの URI である場合もあれば、より興味深いリソースへの URI である場合もあります。

数ページ後…

307 (「一時的なリダイレクト」)

要求されたリソースがホームではないため、要求は処理されませんでした: 他の URI にあります。クライアントは別の URI にリクエストを再送信する必要があります。GETサーバーが表現を送信することだけが要求されている要求の場合、このステータス コードは同一ですto 303 (“See Other”)サーバーがクライアントをミラー サイトに送信したい場合は、 に対する適切な応答となる典型的なケースです。307GETただしPOST, PUT, and DELETE、サーバーがリクエストに応じて何らかのアクションを実行することが期待されるリクエストの場合、このステータス コードは とは大きく異なり303ます。への303応答POST, PUT, or DELETE操作は成功したが、応答のエンティティ本体がこの要求とと​​もに送信されていないことを意味します。クライアントが応答のエンティティ ボディを必要とする場合は、GET別の URI に対して要求を行う必要があります。a307に対する aPOST, PUT, or DELETEは、サーバーが操作を実行しようとさえしていないことを意味します。Locationクライアントは、ヘッダーの URI に要求全体を再送信する必要があります。

類推が役立つ場合があります。調剤する処方箋を持って薬局に行きます。A303さんは薬剤師で、「処方箋を調剤しました。次の窓口に行って薬を受け取ってください。」A307さんは薬剤師で、「その処方箋は出せません。隣の薬局に行ってください。」</p>

于 2012-12-07T00:28:37.957 に答える