1 |
wakaba |
1.2 |
|
2 |
|
|
- [1] ''Another HTML-lint : Explanation'' <http://openlab.ring.gr.jp/k16/htmllint/explain.html#illegal-format-url>
|
3 |
|
|
正しくない [[URI]] の例が幾つかあります。
|
4 |
|
|
[[#comment]]
|
5 |
|
|
|
6 |
|
|
|
7 |
|
|
* RFC 2068 の定義
|
8 |
|
|
|
9 |
|
|
[2] [[RFC 2068]] 3.2 で規定されています。
|
10 |
|
|
ただし、 [[HTTP]] で使うための
|
11 |
|
|
[[URI]] の定義であって、一般の場面の
|
12 |
|
|
URI としての定義ではないことに注意が必要です。
|
13 |
|
|
|
14 |
|
|
具体的には、本来 URI
|
15 |
|
|
では使えないはずの [[national]]
|
16 |
|
|
の文字が認められていたりします。
|
17 |
|
|
|
18 |
|
|
- http_URL = "http:" "//" host [ ":" port ] [ abs_path ]
|
19 |
|
|
- host = <A legal Internet host domain name or IP address (in dotted-decimal form), as defined by Section 2.1 of RFC 1123>
|
20 |
|
|
-- = uri.[[host]] ;; = hostname / [[IPv4address]]
|
21 |
|
|
- port = *DIGIT
|
22 |
|
|
|
23 |
|
|
- relativeURI = net_path | abs_path | rel_path
|
24 |
|
|
- net_path = "//" net_loc [ abs_path ]
|
25 |
|
|
- abs_path = "/" rel_path
|
26 |
|
|
- rel_path = [ path ] [ ";" params ] [ "?" query ]
|
27 |
|
|
- path = fsegment *( "/" segment )
|
28 |
|
|
- fsegment = 1*pchar
|
29 |
|
|
-- = 1*((OCTET - unsafe) / escaped)
|
30 |
|
|
- segment = *pchar
|
31 |
|
|
-- = *((OCTET - unsafe) / escaped)
|
32 |
|
|
- params = param *( ";" param )
|
33 |
|
|
- param = *( pchar | "/" )
|
34 |
|
|
-- = *((OCTET - unsafe) / escaped)
|
35 |
|
|
- scheme = 1*( ALPHA | DIGIT | "+" | "-" | "." )
|
36 |
|
|
- net_loc = *( pchar | ";" | "?" )
|
37 |
|
|
-- = *((OCTET - unsafe) / escaped)
|
38 |
|
|
- query = *( uchar | reserved )
|
39 |
|
|
-- = *(([[OCTET]] - [[unsafe]]) / [[escaped]])
|
40 |
|
|
- fragment = *( uchar | reserved )
|
41 |
|
|
-- = *((OCTET - unsafe) / escaped)
|
42 |
|
|
|
43 |
|
|
なんかこの構文破綻してる気がしますが。。。
|
44 |
|
|
例えば [CODE(ABNF)[segment = 2068.segment - "/"]]
|
45 |
|
|
と定義しておかないと[[欲張り]]過ぎるんじゃ?
|
46 |
|
|
|
47 |
|
|
- [3] 仕様の詳細は [CODE(WikiPage)[[[HTTP//URI]]]] を参照されたし。
|
48 |
|
|
|
49 |
|
|
[[#comment]]
|
50 |
|
|
|
51 |
|
|
|
52 |
|
|
* メモ
|
53 |
|
|
|
54 |
|
|
[4]
|
55 |
|
|
|
56 |
|
|
> RFC 2616 には HTTPプロトコルに関することが書かれており,3.2.2 http URL に書かれている http URL も,HTTPプロトコルの中での話になります.一般に,HTML のリンクに使用されるものは,純粋に HTTPプロトコルの中で使用される http URL ではなく, scheme が http であるURI References です.
|
57 |
|
|
|
58 |
|
|
出典: [CITE[Perlメモ]] <http://www.din.or.jp/%7Eohzaki/perl.htm#httpURL>
|
59 |
|
|
(2005年3月現在)
|
60 |
|
|
|
61 |
|
|
このような解釈は正しく'''ありません'''。 [[IANA]]
|
62 |
|
|
の [[URI scheme]] 登録簿に拠れば [CODE(URI)[[[http]]:]]
|
63 |
|
|
URI scheme の出典は [[RFC 2616]] であり、 [[IETF]]
|
64 |
|
|
的に有効な [CODE(URI)[[[http]]:]] [[URI]] の規定は
|
65 |
|
|
([[HTTP]] であれ [[HTML]] であれ、その他の文脈であれ)
|
66 |
|
|
[[RFC 2616]] だけです。
|
67 |
|
|
|
68 |
|
|
更に
|
69 |
|
|
|
70 |
|
|
> たとえば http://user:passwd@www.din.or.jp/~ohzaki/perl.htm#URI は URI References ですが,user:passwd@ の部分,すなわち,userinfo や,#URI の部分,すなわち, Fragment Identifier は HTTPプロトコルの中で使用される http URL としては不正なものとなります.しかし,HTML のリンクとしては問題ありません.なぜなら,クライアント(ブラウザ)が HTTPプロトコルで通信する際にはそれらを削除しているからです.
|
71 |
|
|
|
72 |
|
|
と説明がありますが、このような議論は実装がそうであるというだけで、
|
73 |
|
|
仕様がそうであるとの根拠はありません。
|
74 |
|
|
([[RFC 2396]] の時代に [[URI参照]]の一部分ではあっても [[URI]]
|
75 |
|
|
の一部分ではなかった[[素片識別子]]は別として、)
|
76 |
|
|
単に仕様と実世界が整合していないというだけであって、
|
77 |
|
|
[[HTTP]] で使うか [[HTML]] で使うかは関係ありません。
|
78 |
|
|
|
79 |
|
|
個々の [[URI scheme]] の規定は [[RFC 2396]] (や新しい [[RFC 3986]])
|
80 |
|
|
の一般の規定に優先するので、 [[RFC 2396]] で許されるように見えても
|
81 |
|
|
[[RFC 2616]] で許されないものは、すべて認められません。
|
82 |
|
|
|
83 |
|
|
([CODE(URI)[[[ftp]]:]] [[URI]] に関する部分にも同様の指摘ができます。
|
84 |
|
|
ただし [CODE(URI)[[[ftp]]:]] [[URI scheme]] の仕様は未だにいにしえの
|
85 |
|
|
[[RFC 1738]] のままで、実装とまったく整合していません。)
|
86 |
|
|
|
87 |
|
|
[5]
|
88 |
|
|
[CITE[What do HTTP URIs Identify? - Design Issues]] <http://www.w3.org/DesignIssues/HTTP-URI>
|
89 |
|
|
([[名無しさん]])
|
90 |
|
|
|
91 |
|
|
[6]
|
92 |
|
|
[CITE[What do HTTP URIs Identify? - Design Issues]] <http://www.w3.org/DesignIssues/HTTP-URI2.html>
|
93 |
|
|
([[名無しさん]])
|
94 |
|
|
|
95 |
|
|
[7]
|
96 |
|
|
[CITE[TAG Issues List]] <http://www.w3.org/2001/tag/issues.html?type=1#httpRange-14>
|
97 |
|
|
([[名無しさん]])
|
98 |
|
|
|
99 |
|
|
[8]
|
100 |
|
|
[CITE@EN[URNs, Namespaces and Registries]] ([CODE[2006-09-01 17:51:46 +09:00]] 版) <http://www.w3.org/2001/tag/doc/URNsAndRegistries-50-2006-08-17.html>
|
101 |
|
|
([[名無しさん]])
|
102 |
|
|
|
103 |
|
|
[9]
|
104 |
|
|
[CITE[freshmeat.net: Project details for mod_xml_meta]] ([CODE[2008-03-22 12:38:33 +09:00]] 版) <http://freshmeat.net/p/mod_xml_meta>
|
105 |
|
|
|
106 |
|
|
> HTTP headers that are embedded as processing instructions (<?http header="..." ?>) in XML files are extracted by this Apache2 module and sent with the response body. mod_xml_meta is an easier and more transparent replacement for mod_cern_meta, but obviously does not work with all files.
|
107 |
|
|
|
108 |
|
|
([[名無しさん]])
|
109 |
|
|
|
110 |
|
|
[10]
|
111 |
wakaba |
1.1 |
>>9 の [CODE(file)[[[README]]]] より:
|
112 |
|
|
|
113 |
|
|
<?http header="Content-Type: application/x-your-format+xml" ?>
|
114 |
|
|
<?http header="X-Server: fopen()/2.4.19" ?>
|
115 |
|
|
<?http header="X-Your-Header: true" ?>
|
116 |
|
|
|
117 |
wakaba |
1.2 |
* フォーム提出
|
118 |
|
|
|
119 |
|
|
[11] [CITE@en-GB-x-Hixie[Web Forms 2.0]] ([TIME[2009-01-05 20:07:15 +09:00]] 版) <http://www.whatwg.org/specs/web-forms/current-work/#for-http> |