/
92.txt
76 lines (58 loc) · 4.54 KB
/
92.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
[1] 【[[HTTP]]】 See Other。
* 仕様書
[REFS[
- [306] [CITE@en[RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content]] ([TIME[2014-06-07 01:55:45 +09:00]] 版) <https://tools.ietf.org/html/rfc7231#section-4.3.3>
]REFS]
* 文脈
[305] [[起源鯖]]は、 [CODE(HTTP)@en[[[POST]]]] の処理の結果が既存の[[資源]]の[[表現]]と等価である時には、 その
[[URL]] を [CODE(HTTP)@en[[[Location:]]]] [[ヘッダー]]に指定した
[CODE(HTTP)[[[303]]]] [[応答]]を送信することができます [SRC[>>306]]。
* 歴史
[FIG(quote)[
[FIGCAPTION[
[307] RFC 2068・2616 (HTTP/1.1) 10.3.4 303 See Other
]FIGCAPTION]
> The response to the request can be found under a different URI and
SHOULD be retrieved using a GET method on that resource. This method
exists primarily to allow the output of a POST-activated script to
redirect the user agent to a selected resource. The new URI is not a
substitute reference for the originally requested resource. The 303
response [DEL[is not cachable]] [INS[MUST NOT be cached]],
but the response to the second (redirected) request [DEL[MAY]] [INS[might]] be cacheable.
要求に対する応答は異なる URI に見つかり、その資源を [CODE(HTTP)[[[GET]]]]
method を使って取り出す'''べきです'''。この方法は、主として
[CODE(HTTP)[[[POST]]]] で活性化されたスクリプトの出力が利用者エージェントを選択された資源に[RUBY[再指向] [リダイレクト]]するために存在します。
新しい URI は元の要求資源の代替参照ではありません。
[CODE(HTTP)[303]] 応答はキャッシュ'''してはなりません'''が、
第2 (再指向先) 要求の応答はキャッシュ可能かもしれません。
> [DEL[If the new URI is a location, its URL]] [INS[The different URI]]
SHOULD be given by the Location field in the response. Unless the request method was HEAD, the entity of the
response SHOULD contain a short hypertext note with a hyperlink to
the new URI(s).
異なる URI は応答の [CODE(HTTP)[Location]] 欄で与える'''べきです'''。
要求 method が [CODE(HTTP)[[[HEAD]]]] でない限り、
応答の実体は新しい URI (群) へのハイパーリンクの入った短いハイパーテキスト覚書を含む'''べきです'''。
[INS[
> Note: Many pre-HTTP/1.1 user agents do not understand the 303
status. When interoperability with such clients is a concern, the
302 status code may be used instead, since most user agents react
to a 302 response as described here for 303.
注意 : 多くの HTTP/1.1 以前の利用者エージェントは [CODE(HTTP)[303]]
状態を理解しません。そのようなクライアントとの相互運用性を気にするのであれば、
代わりに [CODE(HTTP)[[[302]]]] 状態符号を使っても構いません。
ほとんどの利用者エージェントはここで [CODE(HTTP)[303]]
について説明したように [CODE(HTTP)[302]] 応答に対しても再動作します。
]INS]
]FIG]
* 実装
[2] [[NC]] 4.01 は未対応。
[3] [[WinIE]] は1で既に対応しています。とはいってもきっと [CODE(HTTP)[303]] は知らなくて、 [CODE(HTTP)[3]] で [CODE(HTTP)[[[Location:]]]] 欄があったからそれに飛んだだけだとは思います。
- [4] [[MosaicView]] 2.0 は対応しています。事情は >>3 同様でしょう。
- [5] [[Infomosaic]] も >>3-4 に同じ。
- [6] 一方 [[MosaicNetscape]] 0.9 は未対応。 Netscape の最初の code で書き直したのかな?
- [7] [[Mozilla]] ([[Gecko]]) はもちろん対応しているのですが、最近の版ではリダイレクト先に [CODE(HTTP)[POST]] 内容を再送してしまう不具合があります。 (1.3 以前は大丈夫で、 1.4b 以降は駄目です。その途中のどこで enbug したのかは調べてません。 1.5 ではまだ直ってません。)
- [8] >>7 うーんと、 2616 には [CODE(HTTP)[GET]] する'''べき'''とは書かれているけど、 [CODE(HTTP)[POST]] しては'''ならない'''わけではないから・・・とはいえ、 [CODE(HTTP)[POST]] 後の処理のために用意されたとはっきり書かれているし、 >>7 の挙動は不具合というより他ない。 2616 で追加された [CODE(HTTP)[[[302]]]] の補足説明からも UA が取るべき行動でないことは明らか。
* メモ
[304] [CITE@en[URLs in Data Primer]]
( ([TIME[2013-05-30 21:44:23 +09:00]] 版))
<http://www.w3.org/TR/2013/WD-urls-in-data-20130604/#http-responses>