[31] TCP/IP や UDP/IP のアドレスである、 ホストとポートの組を合わせた構文が用いられることがよくあります。 URL の authority でも、この構文が用いられることが多いです。
[415] http:
など多くの URL では、
authority にホスト名を指定します。
直後にポート番号、直前に userinfo を指定することも可能なことが多いです。
[38] URL scheme にもよりますが、一般にホスト名が何を表しているのか正確には定義されていません。
ほとんどの場合、このホスト名はインターネットの DNS によって名前解決して得られる
IPアドレスによって表現されるホストを意味しています。しかし名前解決の方法や結果はシステムやアプリケーションに依存しており、
イントラネット内の独自のドメイン名や、 DNS 以外の方法で解決される名前、
Tor の .onion
ドメイン名などが記述されることも少なくありません。
[36] 通常は IPv4 や IPv6 のユニキャストアドレスに解決されることが期待されていますが、 IP が使われるとは限りませんし、マルチキャスト等のアドレスとなることもあります。 CoAP のようにマルチキャストアドレスへの解決を特に想定したものもあります。
[55] ホスト名とポートを authority に使う URLの起源 (の直列化) として使われる場合もあります。
[43] ホストとしては、 FQDN の他、接尾辞を省略した形態や、 内部名の使用も特に禁止されていません。
[39] ホストとして、末尾に root domain を表す .
を付けたドメイン名が用いられることも稀にあります。
しかし URL としての正規化の対象にはなっていませんから、 .
が付かないドメイン名とは異なるものとして扱われるのが普通です。
[40] 例えば http://www.example.com/
と http://www.example.com./
の URLの起源は異なるとみなされますから、 JavaScript で両者のページに直接アクセスすることはできません。
[41] しかし <http://to./> のように TLD にアクセスしたい時は内部名と誤認されることを防ぐため .
を明示します。
[44] IPアドレスによる指定は好ましくない >>45 とされることもあります。
[46] 予約済みIPアドレスの使用も特に禁止されていません。
[428] IPv6アドレスは [
と ]
で括って指定することができます。
この区切りは、ホストとポートの区切りの :
と、
IPv6アドレス内部の :
の区別のために必要とされています。
[3] URLUtils
インターフェイスの
host
IDL属性は、
ホストとポートを表します。
[24] この属性は、 Unforgeable
です >>4。
[5] location.host
の取得器は、次のようにしなければなりません
>>4。
[17] location.host
の設定器は、次のようにしなければなりません
>>4。
[16] URL Standard の用語であるホストは、ポートを含まないホスト名部分を表します。
一方 DOM API の host
は、
ホストとポートの両方を表します。
[2] hostname
IDL属性はホストのみを表します。
[30] Alt-Svc:
ヘッダーは、本項のホストとポートの構文とは逆に、
ホストが省略可能でポートが必須の構文を採用しています。
[430] IPv6 Scoped Address は IPv6アドレスの後に %
で区切ってゾーン識別子を指定したもので、
解釈する環境におけるネットワークインターフェイスとそれを使ってアクセスするべき IPv6アドレスを表したものとなっています。
RFC 6874 はこれを authority として使う方法を定義しています。
[433] 区切り文字の %
は、パーセント符号化して %25
とします >>431。
[432] ゾーン識別子は、非予約文字はそのままでも構いませんが、それ以外はパーセント符号化します >>431。 このとき使う文字コードは特に規定されていないようです。
[436] この RFC が発行される前からこの構文を実装していたWebブラウザーもあり、またパーセント符号化されていない
%
を区切りにしている Webブラウザーもありました >>431。 (特別に解釈しないでそのまま
OS に渡していただけかもしれませんが...) ただし生の %
を使った場合、その直後2文字が16進数として解釈できる場合、
2種類の解釈が可能となってしまいます。 Webブラウザーで利用者に URL を入力させる場合にあっては、
16進数として解釈できない場合は %
だけでも %25
の意味に扱うのがよかろうとされています >>431。
[437] ゾーン識別子は特定のホストでしか意味をなしませんし、むしろセキュリティー上の懸念もあります。
ですから明確な用途がある場合を除き、認めてはなりません。例えば link-local address (fe80::/10
)
がありますが、この RFC の執筆の時点で認められるべきなのはこれだけです。 >>431
[439] HTTP クライアント、プロキシその他中間のものは外に出す URL からゾーン識別子を削除しなければなりません >>431。
Host:
ヘッダーにもゾーン識別子は含めるべきではなさそうです。
(Host:
(RFC 723x) は URL (RFC 3986) の
host
を参照しています。)[441] URL Standard にはこの構文は含まれていません。
IPvFuture
[443] RFC 3986 は将来の拡張用として、 IPvFuture
構文を定義しています。
IPv6アドレスのように [
と ]
で括りますが、先頭に
v1.
のような版識別子がつきます。
[444] 現時点でこの構文は使われていません。また IANA登録簿もなさそうです。
[445] URL Standard にはこの構文はありません。
[449] draft-fenner-literal-zone はゾーン識別子のために
http://[v6.fe80::a+en1] http://[v1.fe80::a_en1]... のような構文を提案していましたが、十分な支持を得られなかったようで、数年のブランクの後 >>431 の通り IPv6アドレスの構文を拡張する形になっています。
[47] <http://[208.77.188.166]/>
Firefox は IPv4 番地 208.77.188.166
の鯖に接続します。 Host:
には 208.77.188.166
という値が使われます。
Opera は IPv4 番地 208.77.188.166
の鯖に接続します。 Host:
にはおそらく [208.77.188.166]
という値が使われるので、 Apache からは 400
が返ってきます。
WinIE 7 ではエラーが表示されます。
[407] <http://[www.google.com]/>
[427] Windows 7 上の Chrome では、 >>47 も >>407 もリンク先が about:blank
になりました。
解決できない URL として扱われているのでしょうか。
[26] Editorial: non-relative flag got renamed · whatwg/html@d360c27 ( 版) <https://github.com/whatwg/html/commit/d360c27d44c52390441b5910d39e898160ec016d>
[27] Merge effective script origin into origin · whatwg/html@8a843f2 ( 版) <https://github.com/whatwg/html/commit/8a843f2169a6864a3024c4329528dccb2051d275>
[28] Clarify that proxy hosts are domains and ports. (shs96c著, ) <https://github.com/w3c/webdriver/commit/29c5a9a953a8d388589ce7ee50e8c24f4c6e6c4f>
[29] Better define proxies (shs96c著, ) <https://github.com/w3c/webdriver/commit/a90db4b119de8c77875647e30b611c1c49a4349b>
[50] Note that there are no plans to support <zone_id>. Fixes https://www.… · whatwg/url@ca97ec8 ( 版) <https://github.com/whatwg/url/commit/ca97ec836d3ff246d5c53f420b0eb2798f2a982c>
[51] Indicate that host is not always used as network address. Fixes https… · whatwg/url@4c0f091 ( 版) <https://github.com/whatwg/url/commit/4c0f0916e640a3b031302c0a11cfad50c3f8a2b6>
[59] 945240 - Consider making Location.href punycode non-ASCII hostnames () <https://bugzilla.mozilla.org/show_bug.cgi?id=945240>
[61] 700999 - Firefox does not appear to support IPv6 link-local addresses () <https://bugzilla.mozilla.org/show_bug.cgi?id=700999>
[62] draft-sweet-uri-zoneid-01 - An IPvFuture Syntax for IPv6 Link-Local Addresses () <https://tools.ietf.org/html/draft-sweet-uri-zoneid-01>