[1]
HTTP
の状態符号
303
は、
他の URL を GET
するべきことを示すリダイレクトです。
[309] 303
は、鯖が利用者エージェントに対して URL
を示して異なる資源にリダイレクトし、元の要求に対する間接的な応答を提供することを意図するものです >>308。
[313] 303
はどの要求メソッドにも適用可能です。
主としてPOST
の出力によって利用者エージェントを選択された資源にリダイレクトして、
POST
応答に対応する情報を元の要求とは独立に単独で識別したり、
ブックマークしたり、キャッシュしたりできるようにするのが主たる用途です。
>>308
[314] GET
要求に対する 303
応答は、起源鯖が対象資源について HTTP により転送できる表現を持っていないことを示します。
Location:
ヘッダーの値は対象資源の説明を含む資源を指しており、
その資源を取得すると、
受信者にとって有用な表現を得られるかもしれません
(ただし元の対象資源を表現することを意味しません)。
>>308
[9] ○○の場面では 302
よりも 303
が適切である、といった類の主張もたまにみられますが、宗教的なもので、
その方が特別に好ましい場面があるとは言いがたいと思われます。
[13] 実際の所いつ (他の状態符号ではなく) 303
を使うべきなのかは不明です。
[305] 起源鯖は、 POST
の処理の結果が既存の資源の表現と等価である時には、 その
URL を Location:
ヘッダーに指定した
303
応答を送信することができます >>306。
[312] 鯖はリダイレクト先の資源の URL
を Location:
ヘッダーに指定します >>308。
[315] HEAD
要求の場合を除き、
303
応答の表現は Location:
ヘッダーの URL と同じ URL へのハイパーリンクを含む短いハイパーテキストのメモを含めるべきです。
>>308
[311] 利用者エージェントは、 Location:
ヘッダーの URL を対象とした取得の要求を
(その URL も HTTP なら GET
や
POST
の要求で) 実行し、その結果を元の要求の結果として提示できます。
ただしその要求の結果もリダイレクトかもしれません。 >>308
[3] WinIE は1で既に対応しています。とはいってもきっと 303
は知らなくて、 3
で Location:
欄があったからそれに飛んだだけだとは思います。
[7] Mozilla (Gecko) はもちろん対応しているのですが、最近の版ではリダイレクト先に POST
内容を再送してしまう不具合があります。 (1.3 以前は大丈夫で、 1.4b 以降は駄目です。その途中のどこで enbug したのかは調べてません。 1.5 ではまだ直ってません。)
[8] >>7 うーんと、 2616 には GET
するべきとは書かれているけど、 POST
してはならないわけではないから・・・とはいえ、 POST
後の処理のために用意されたとはっきり書かれているし、 >>7 の挙動は不具合というより他ない。 2616 で追加された 302
の補足説明からも UA が取るべき行動でないことは明らか。
[304] URLs in Data Primer ( ( 版)) http://www.w3.org/TR/2013/WD-urls-in-data-20130604/#http-responses
[317] Status codes in HTTP ( ( 版)) http://www.w3.org/Protocols/HTTP/HTRESP.html#z10
[12] Allow user agents to transmit RST_STREAM upon seeing a redirect · whatwg/fetch@af0dc92 ( 版) https://github.com/whatwg/fetch/commit/af0dc923f7636751996a9762309904511725a1a7
[15] Stream-based requests (Request with ReadableStream) (yutakahirano著, ) https://github.com/whatwg/fetch/commit/0c470b5860fe690b1136b0242951f682405103cc
[16] More eargerly send RST_STREAM on redirects (annevk著, ) https://github.com/whatwg/fetch/commit/fd286755e9664d570260c16f7c1933f424d2f39a
[17] Preserve HEAD method on 303 redirect (annevk著, ) https://github.com/whatwg/fetch/commit/6f29b764cc57aaf2f431e15a3f0fec029926e9e0
[18] 303 redirects should preserve HEAD · Issue #753 · whatwg/fetch () https://github.com/whatwg/fetch/issues/753
[19] Preserve HEAD method on 303 redirect by annevk · Pull Request #796 · whatwg/fetch () https://github.com/whatwg/fetch/pull/796