-
Notifications
You must be signed in to change notification settings - Fork 4
/
8.txt
132 lines (94 loc) · 5.57 KB
/
8.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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
[6] [[URL]] における [DFN[[CODE[[[port]]]]]] は、[[ポート番号]]を表します。
;; [15] [[ポート (TCP/IP)]] も参照。
* 仕様書
[REFS[
- [21] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2016-03-14 22:44:13 +09:00]] 版) <https://html.spec.whatwg.org/#dom-location-port>
]REFS]
* 文脈
[13] [CODE(ABNF)@en[[[port]]]] は、 [[URL]] の [[authority]] のうち、
[CODE(ABNF)@en[[[host]]]] の後の [CODE(URI)[[[:]]]] よりも後の部分です。
[14] ただし [CODE(URI)[[[:]]]] と [CODE(ABNF)@en[[[port]]]] は省略できます。
* 構文
[9] [[ポート]]は、零文字以上の[[ASCII数字]]です。
[FIG(railroad)[
= *
== [[ASCII数字]]
]FIG]
[10] [[空文字列]]もなぜか認められています。
[11] [[先導0]]も認められています。
[12] [[TCP]] や [[UDP]] で認められていない[[ポート番号]]も使えます。
* 既定のポート
[5] [[既定のポート]]
[3] [CITE[Bug 54090 – KURL should remove default port numbers when canonicalizing urls]]
( ([TIME[2011-02-20 17:42:24 +09:00]] 版))
<https://bugs.webkit.org/show_bug.cgi?id=54090>
* TCP/IP ポート番号以外を使う URL scheme
- [4] [CODE(URI)@en[[[git+ssh:]]]]
* [CODE(DOMi)@en[Location]] インターフェイス [CODE(DOMa)@en[port]] 属性
** 性質
[23] この[[属性]]は、 [CODE(xattr IDL)@en[Unforgeable]] です [SRC[>>21]]。
** 取得器
[24] [CODE(JS)@en[location.port]] の[[取得器]]は、次のようにしなければ[MUST[なりません]]
[SRC[>>21]]。
[FIG(steps)[
= [25] [[文脈オブジェクト]]の[F[[[関係する[CODE(DOMi)@en[Document]]]]]]の[F[実効スクリプト起源]]と[[入口設定群オブジェクト]]の[F[実効スクリプト起源]]が[[同じ起源]]でなければ、
== [26] [CODE(DOMe)@en[SecurityError]] [[例外]]を[[投げ]]、ここで停止します。
= [27] [VAR[URL]]を、[[文脈オブジェクト]]の[F[URL][Location (DOM)]] に設定します。
= [28] [VAR[URL]]の[F[ポート]]が [[null]] なら、
== [29] [[空文字列]]を返してここで停止します。
= [30] [VAR[URL]] の[F[ポート]]に[[整数の直列化]]を適用した結果を返します。
]FIG]
** 設定器
[31] [CODE(JS)@en[location.port]] の[[設定器]]は、次のようにしなければ[MUST[なりません]]
[SRC[>>21]]。
[FIG(steps)[
= [38] [VAR[入力]]を、与えられた値を [CODE(IDL)@en[USVString]] として解釈した結果に設定します。
= [32] [[文脈オブジェクト]]の[F[[[関係する[CODE(DOMi)@en[Document]]]]]]の[F[実効スクリプト起源]]と[[入口設定群オブジェクト]]の[F[実効スクリプト起源]]が[[同じ起源]]でなければ、
== [33] [CODE(DOMe)@en[SecurityError]] [[例外]]を[[投げ]]、ここで停止します。
= [34] [VAR[複製]]を、[[文脈オブジェクト]]の[F[URL][Location (DOM)]] に設定します。
= [35] [VAR[複製]]の[F[非相対フラグ]]が設定されていれば、ここで停止します。
= [37] [VAR[複製]]の[F[URL scheme]]が[CODE(URI)@en[file][file:]]なら、ここで停止します。
= [36] [VAR[入力]]に[[基本URL構文解析]]を適用します。
[VAR[URL]] は[VAR[複製]]、[VAR[状態上書き]]は [[port state]] とします。
= [22] [[文脈オブジェクト]]と [VAR[複製]]について
[[[CODE(DOMi)@en[Location]]-object-setter navigate]] を実行します。
]FIG]
* 歴史
[2]
[CODE(URI)@en[http:]] [[URI]]で[[ポート番号]]を含められるようになったのは[[Line Mode Browser]]では[TIME[1991年11月][1991-11]]の0.12からのようです。
[REFS[
- [39] [CITE@en[Change History of Line Mode Browser]]
<https://www.w3.org/LineMode/User/Features.html>
]REFS]
[1]
[CODE(URI)[[[about:]]]] とか[[ポート]]のない [[URI]]
を開いている時に [CODE(JS)@en[location.port]]
を見ると、 [CODE[134946048]] とか変な値になります。
[[DOM Inspector]] で見ると [CODE[1]] になっています。
([[Firefox]] 1.0.4)
[REFS[
- [7] [CITE@en[RFC 6943 - Issues in Identifier Comparison for Security Purposes]]
( ([TIME[2013-11-19 01:20:54 +09:00]] 版))
<http://tools.ietf.org/html/rfc6943#section-3.2>
- [8] [CITE@en[RFC 6335 - Internet Assigned Numbers Authority (IANA) Procedures for the Management of the Service Name and Transport Protocol Port Number Registry]]
([TIME[2015-03-15 10:21:32 +09:00]] 版)
<https://tools.ietf.org/html/rfc6335>
]REFS]
[FIG(quote)[
[FIGCAPTION[
[16] [CITE@en-US[I can't bind to a port – Help Center]]
([TIME[2014-11-05 00:59:51 +09:00]] 版)
<https://help.openshift.com/hc/en-us/articles/202185874-I-can-t-bind-to-a-port>
]FIGCAPTION]
> It is possible to bind to the internal IP with port range: 15000 - 35530. All other ports are reserved for specific processes to avoid conflicts.
]FIG]
[17] >>16 0.0.0.0 や 127.0.0.1 では bind できなくて、 OPENSHIFT_DIY_IP など適当な[[環境変数]]を使う必要があるようです。
[18] [CITE@en[RFC 7605 - Recommendations on Using Assigned Transport Port Numbers]]
([TIME[2015-08-08 05:18:27 +09:00]] 版)
<https://tools.ietf.org/html/rfc7605>
[19] [CITE@en[Make port either null or a 16-bit integer. Fixes https://www.w3.org/B… · whatwg/url@c3a454c]]
([TIME[2015-08-15 11:49:19 +09:00]] 版)
<https://github.com/whatwg/url/commit/c3a454c073d6bf9f24d8ee2b5c3e6e006b943777>
[20] [CITE@en[Fix #76: a URL's port is a 16-bit _unsigned_ integer · whatwg/url@ce81868]]
([TIME[2016-01-15 18:59:56 +09:00]] 版)
<https://github.com/whatwg/url/commit/ce81868076997e749a4cc749b3fe3754068de7a8>