/
485.txt
636 lines (496 loc) · 41.2 KB
/
485.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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
[24] [[Web]] の[[セキュリティーモデル]]である[RUBYB[[[同一起源ポリシー]]]@en[same-origin policy]]において、
[[URL]] の[[ドメイン]]等によって定まる[[資源]]の管理の単位を[DFN[[RUBY[起源]@en[オリジン]@en[origin]]]]といいます。
;; [85] [[同一起源ポリシー]]の項もご覧ください。
[292] [[起源]]は、[[URL scheme]]、[[ホスト]]、[[ポート]]などによって決まる[[資源]]群の範囲であり、[[スクリプト]]などが通常相互にアクセスできる領域を定めるものとなっています。
[EG[
[310] 例えば <http://www.example.com/hoge?aa> に [CODE(HTMLe)@en[[[iframe]]]] で
<http://www.example.org/fuga?bb> が埋め込まれているとします。外側の [CODE(DOMi)@en[[[Window]]]]
の[[起源]]は [CODE[(http, www.example.com, 80)]] で、内側の [CODE(DOMi)@en[[[Window]]]]
の[[起源]]は [CODE[(http, www.example.org, 80)]] です。両者は異なる[[起源]]に属しますから、
一方の[[スクリプト]]から他方の [[DOM]] にはアクセスできません。
]EG]
[161] [[スクリプト]]の実行の際には、類似した概念である[DFN[[RUBYB[実効スクリプト起源]@en[effective script origin]]]]が用いられます。
多くの場合は[[起源]]と同一ですが、 [CODE(JS)@en[[[document.domain]]]]
によって異なる値に設定されることがあります。
* 仕様書
[REFS[
- [135] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-02-22 20:11:59 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#origin>'''
- [127] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-02-22 20:11:59 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#windows>
- [131] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-02-22 20:11:59 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#origins-of-workers>
- [300] [CITE@en-US[URL Standard]] ([TIME[2014-06-27 13:17:26 +09:00]] 版) <http://url.spec.whatwg.org/#origin>
- [233] [[[CODE(DOMi)@en[XMLHttpRequest]]起源]]
-- [231] [CITE@en-US[XMLHttpRequest]] ([TIME[2012-06-23 04:08:48 +09:00]] 版) <http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#xmlhttprequest-origin>
-- [232] [CITE@en-US[XMLHttpRequest]] ([TIME[2012-06-23 04:10:36 +09:00]] 版) <http://dvcs.w3.org/hg/xhr/raw-file/tip/Overview.html#dom-xmlhttprequest-open>
-- [229] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-06-23 00:59:02 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#interface-objects-and-constructors>
- [248] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2012-11-16 20:26:18 +09:00]] 版) <http://www.whatwg.org/specs/web-apps/current-work/#worker-origin>
- [253] [CITE@en-US[DOM Standard]] ([TIME[2012-12-20 16:17:48 +09:00]] 版) <http://dom.spec.whatwg.org/#concept-document>
- [272] [CITE@en[CSS Cascading and Inheritance Level 3]] ([TIME[2013-08-09 23:50:23 +09:00]] 版) <http://dev.w3.org/csswg/css-cascade/#at-import>
]REFS]
;; [293] 以前は [[RFC 6454]] [SRC[>>23]] に定義がありましたが、
現在では事実上廃止されたものとみなされています。
* 識別
[25] [[起源]]は、
[FIG(list)[
- [2] [[URL scheme]]、[[host]]、[[port]] の[[3項組]]と、場合によっては[RUBYB[追加のデータ]@en[extra data]]
- [3] [RUBYB[大域的に固有な識別子]@en[globally unique identifier]]
]FIG]
... のいずれかによって表されます。
[37] 大域的に固有な識別子は、他のすべての[[起源]]と異なる任意の値です。 [SRC[>>23 2.3.]]
;; [295] 大域的に固有な識別子は、 [[URL Standard]] では一時期
「[RUBYB[不透明な識別子]@en[opaque identifier]]」とも呼ばれていましたが、
より正確な「大域的に固有な識別子」に改められました [SRC[>>1]]。なお
[[HTML Standard]] や [[RFC 6454]] は以前から大域的に固有な識別子と呼んでいました。
[39] [[HTTP]] などで[[起源]]をやり取りする必要がある時は、 [[URL]]
の構文の[[部分集合]]によって[[直列化]]して表します。
大域的に固有な識別子は、値なしや値 [[null]] など特別な値によって表されます。
その場合大域的に固有な識別子は互いに区別できません。
[EG[
[40] 例えば [CODE(URI)@en[http://www.example.com/foo/bar]] の[[起源]]は
([CODE(URI)[http]], [CODE(URI)[www.example,com]], [CODE(URI)[80]]) の[[3項組]]によって表されます。
これを [[HTTP]] の [CODE(HTTP)@en[[[Origin:]]]] 欄に含める時は、
[CODE(URI)[http://www.example.com]] と表現します。
]EG]
[FIG(corollary)[
[38] 大域的に固有な識別子は[[利用者エージェント]]の外や[[スクリプト]]に露出することが無いので、
特定[[プロセス]]内の連番など任意の方法で決定できます。
]FIG]
[FIG(corollary)[
[4] 大域的に固有な識別子を直列化する方法はありませんから、
他の[[起源]]から大域的に固有な識別子によって表される[[起源]]を示すことはできません。
]FIG]
* 追加のデータ
[143] [[RFC 6454]] では[[3項組]]だけでしたが、 [[HTML]] によれば更に場合によっては[RUBYB[追加のデータ]@en[extra data / additional data]]を加えることができます。
[145] 追加のデータとしては、[[暗号化]]された[[接続]]を使っている時に[[サイト]]の[RUBYB[[[証明書]]]@en[certificate]]を用いることが想定されています。
途中で[[証明書]]が変化した時に、[[証明書]]も[[起源]]に含めることで、前後で別の[[起源]]として扱われるようになります。
[SRC[>>135]]
;; [146] 従って[[中間者攻撃]] ([[MITM]]) に対する防御となります。
[149] この規定は >>147 で追加されたもので、当時は [[URL]] の[[起源]]に関する規定において[[証明書]]を[[起源]]に含めても構わない状況が明記されていましたが、
>>148 で当該部分が [[RFC]] に委ねるとして削除され、しかし [[RFC]]
には相当する規定が含まれなかったため、宙に浮いてしまっています。
([[RFC]] にかわる [[URL Standard]] の定義にも、[[証明書]]は用いられていません。)
[REFS[
- [147] [CITE@en[Web Applications 1.0 r1839 Allow the origin to include extra data, such as the host's certificate. (credit: el)]] ([TIME[2008-07-02 08:09:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=1838&to=1839>
- [148] [CITE@en[Web Applications 1.0 r6728 Defer to the origin spec for URL origin.]] ([TIME[2011-10-22 07:20:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=6727&to=6728>
]REFS]
* 比較
[150] 次の[[手順]]が[[真]]を返す時、2つの[[起源]]は[DFN[[RUBYB[同一起源]@en[same origin]]]]です。 [SRC[>>135]]
[FIG(steps)[
= [151] [VAR[A]], [VAR[B]] をそれぞれ比較する2つの[[起源]]としまう。
= [152] [VAR[A]] と [VAR[B]] が共に大域的に固有な識別子であり、その値が等しければ、[[真]]を返します。
= [153] そうでなく、 [VAR[A]] と [VAR[B]] の一方または両方が大域的に固有な識別子なら、[[偽]]を返します。
= [154] [VAR[A]] と [VAR[B]] の [[scheme]] 部品が[RUBYB[同一]@en[identical]]でなければ、[[偽]]を返します。
= [155] [VAR[A]] と [VAR[B]] の [[host]] 部品が同一でなければ、[[偽]]を返します。
= [156] [VAR[A]] と [VAR[B]] の [[port]] 部品が同一でなければ、[[偽]]を返します。
= [157] [VAR[A]] と [VAR[B]] の一方が追加のデータを持ち、双方同一でなければ、[[偽]]を返します。
= [158] [[真]]を返します。
]FIG]
;; [159] [[RFC 6454]] の定義 (>>81) とは違ってすべての場合が明確に規定されています。
** 起源横断
[207] [[同一起源]]でないことを[DFN[[RUBY[[[起源横断]]]@en[クロスオリジン]@en[cross-origin]]]]であるといいます。
[REFS[
- [206] [CITE@en-US[Cross-Origin Resource Sharing]] ([TIME[2012-03-01 15:01:30 +09:00]] 版) <http://dvcs.w3.org/hg/cors/raw-file/tip/Overview.html#cross-origin>
]REFS]
* 直列化
[160] [[ASCII直列化]]と[[Unicode直列化]]の2種類があります。どちらも、大域的に固有な識別子は
[CODE[null]] と表現します。
[296] [[ASCII直列化]]できない[[host]]を含む[[起源]]は[[空文字列]]によって表されます。
;; [297] [[RFC 6454]] の定義ではそのような[[起源]]の存在は考慮されていませんでした。
[208] [CODE(HTTP)@en[[[Access-Control-Allow-Origin:]]]] 欄では任意の[[起源]]を表す
[CODE(HTTP)[[[*]]]] という特別な値も認められています。
;;
[136] [[起源]]の[[直列化]]については、 [[RFC 6454]] と [[HTML]] で微妙に定義が異なっていました。
[SRC[>>25 6.]], [SRC[>>135]]
[137] 元々 [[HTML]] にあった定義をコピーして [[IETF]] 版を作った時に政治的な理由か何かで書き換わったのでしょう。
** ASCII 直列化
[88] [[起源]]の [DFN[Unicode [RUBYB[直列化]@en[serialization]]]]は、次の手順によって得られる文字列です
[SRC[>>25 6.1., >>135]]。
[FIG(steps)[
= [99] [[起源]]が [[URL scheme]]、[[host]]、[[port]] の[[3項組]]で''ない''なら、[[文字列]]
[CODE[[[null]]]] を返して停止します。
= [100] そうでなければ、 [VAR[result]] を[[起源]]の [[scheme]] とします。
= [101] [VAR[result]] の後ろに [CODE[://]] を付加します。
= [102] [[RFC]] の定義: [[起源]]の [[host]] 部分を [VAR[result]] の後ろに付加します。
= [140] [[HTML]] の定義: [[起源]]の [[host]] 部分に [[IDNA2003]] [[ToASCII]]
[[演算]]を適用し、結果を [VAR[result]] の後ろに付加します。
-- この時、 [[AllowUnassigned]] と [[UseSTD3ASCIIRules]] の2つの[[フラグ]]は設定した状態にします。
-- [[host]] のいずれかの部品で [[ToASCII]] が失敗したら、[[空文字列]]を返して停止します。
= [103] [[起源]]の [[port]] 部分が [[scheme]] で指定された[[プロトコル]]の[[既定のポート]]と異なっていれば、
[VAR[result]] の後ろに [CODE(char)[[[:]]]] を付加し、更に[[ポート番号]]を[[十進数]]で付加します。
= [104] [VAR[result]] を返します。
]FIG]
;; [105] >>103 は厳密には更に[[ポート番号]]を最小の桁数で (つまり[[先導0]]なしで) 表現するという制約が必要なはずです。
;; [141] [[HTML]] の定義に従えば、 [[LDHラベル]]化できない [[host]] だった場合に[[起源]]は[[空文字列]]によって表されることになります。
[[RFC]] の定義によれば[[空文字列]]になることはありません。
[298] これは次の場面で使われています。
[FIG(list short)[
- [132] [CODE(HTTP)@en[[[Origin:]]]] ([[HTTP]])
- [133] [CODE(HTTP)@en[[[Origin:]]]] ([[Web Sockets]])
- [288] [CODE(HTTP)@en[[[Access-Control-Allow-Origin:]]]] ([[HTTP]])
- [286] [CODE(HTTP)@en[[[X-Frame-Options:]]]] ([[HTTP]])
- [CODE(HTTP)@en[[[Timing-Allow-Origin:]]]] ([[HTTP]])
]FIG]
** Unicode 直列化
[89] [[起源]]の [DFN[Unicode [RUBYB[直列化]@en[serialization]]]]は、次の手順によって得られる文字列です
[SRC[>>25 6.1., >>135]]。
[FIG(steps)[
= [90] [[起源]]が [[URL scheme]]、[[host]]、[[port]] の[[3項組]]で''ない''なら、[[文字列]]
[CODE[[[null]]]] を返して停止します。
= [91] そうでなければ、 [VAR[result]] を[[起源]]の [[scheme]] とします。
= [92] [VAR[result]] の後ろに [CODE[://]] を付加します。
= [93] [[起源]]の [[host]] 部分の各部品を次の手順により変換しつつ、 [CODE(char)[[[.]]]]
で連結して [VAR[result]] の後ろに付加します。
== [139] [[RFC]] の定義:
=== [94] 部品が [[IDNA2008]] [[Aラベル]]なら、対応する[[Uラベル]]にします。
=== [95] そうでなければ、部品をそのまま使います。
== [138] [[HTML]] の定義: 部品に [[IDNA2003]] [[ToUnicode]] [[演算]]を適用します。
= [96] [[起源]]の [[port]] 部分が [[scheme]] で指定された[[プロトコル]]の[[既定のポート]]と異なっていれば、
[VAR[result]] の後ろに [CODE(char)[[[:]]]] を付加し、更に[[ポート番号]]を[[十進数]]で付加します。
= [97] [VAR[result]] を返します。
]FIG]
;; [98] >>96 は厳密には更に[[ポート番号]]を最小の桁数で (つまり[[先導0]]なしで) 表現するという制約が必要なはずです。
;; [106] [[ASCII]] 版との違いは、 >>94 で [[Uラベル]]に変換するところだけです。
[299] これは次の場面で使われています。
[FIG(list short)[
- [134] [CODE(DOMa)@en[[[origin]]]] ([CODE(DOMi)@en[[[MessageEvent]]]])
- [275] [CODE(JS)@en[[[document.origin]]]] ([[DOM]])
- [287] [CODE(DOMa)@en[[[origin]]]] ([CODE(DOMi)@en[[[URLUtils]]]])
]FIG]
** [CODE(URI)@en[file:]] URL の起源の直列化
[200] [CODE(URI)@en[[[file:]]]] [[URL]] の[[起源]]は実装依存となっており (>>31)、
そもそもそれがどのような形で表されるのか不明確です。[[3項組]]かもしれませんし、
大域的に固有な識別子かもしれません。どちらでもない独自の形式かもしれません
[WEAK[(それが仕様上明確に認められているわけではありませんが)]]。
[201] 直列化の[[算法]]を素直に適用すれば、 [CODE[[[null]]]] が得られるはずです。
[203] >>202 によれば [[Safari]] は「[CODE(URI)@en[[[file:]]//]]」を [CODE(HTTP)@en[[[Origin:]]]]
に指定することがあります。
[REFS[
- [202] [CITE[httpwebrequest - Safari complains: Origin file:// is not allowed by Access-Control-Allow-Origin - Stack Overflow]] ([TIME[2012-02-29 23:39:38 +09:00]] 版) <http://stackoverflow.com/questions/6948485/safari-complains-origin-file-is-not-allowed-by-access-control-allow-origin>
]REFS]
** IDNA との関係
[120] [[IDN]] について、[[起源]]の定義が [[URI]] であることから[[起源]]の決定に [[ToASCII]]
が必要となる場合があること、[[Unicode直列化]]を使う場面があることから[[起源]]の表記のために
[[ToUnicode]] が必要となる場合があることにより、[[起源]]は [[IDNA]] に依存しています。
[122] [[RFC]] 上の[[起源]]の定義は [[IDNA2008]] に拠っていますが、 [[IDNA2003]]
と [[IDNA2008]] のどちらを実装するかによって結果が異なることへの注記もあります [SRC[>>23 8.4]]。
[[HTML]] の[[起源]]の定義は [[IDNA2003]] に拠っています。
現実の[[Webブラウザー]]が実装しているものは厳密にはどちらの仕様とも異なっています。
* 別名
[226] [[起源]]や[[実効スクリプト起源]]は[DFN[[RUBYB[[[別名]]]@en[alias]]]]として定義されていることがあり、
その場合、その値は[[別名]]として参照している[[起源]]・[[実効スクリプト起源]]の値となります [SRC[>>135]]。
* URL の起源
[301] [[URL]] の[[起源]]は、次の通り決まります [SRC[>>300]]。
[FIG(steps)[
= [302] [[URL scheme]] が [CODE(URI)@en[[[blob:]]]] なら、
[[scheme data]] を [[URL]] として[[構文解析]]し、
成功すればその[[起源]]、失敗すれば大域的に固有な識別子です。
= [303] [[URL scheme]] が [CODE(URI)@en[[[ftp:]]]],
[CODE(URI)@en[[[gopher:]]]], [CODE(URI)@en[[[http:]]]], [CODE(URI)@en[[[https:]]]],
[CODE(URI)@en[[[ws:]]]], [CODE(URI)@en[[[wss:]]]] なら、
[[URL scheme]]、[[ホスト]]、[[ポート]]の[[三項組]]です。
ただし[[ポート]]が[[空文字列]]なら、[[既定のポート]]です。
= [304] [[URL scheme]] が [CODE(URI)@en[[[file:]]]] なら、
何らかの値です。決めかねるときは大域的に固有な識別子です。
= [305] それ以外の時は、大域的に固有な識別子です。
]FIG]
;; [306] ここでいう [[URL scheme]]、[[ホスト]]、[[ポート]]は [[URL]]
を[[構文解析]]して得られる値なので、[[正準化]]が済んだ値です。
[162] [[URL]] の[[実効スクリプト起源]]は[[起源]]と同じです [SRC[>>135]]。
;; [242] 別名とはされていません。
** [CODE(URI)@en[file:]] URL の起源
[31] 仕様上 [CODE(URI)@en[[[file:]]]] [[URL]] の[[起源]]は[[実装]]定義となっています。
古い[[利用者エージェント]]は [CODE(URI)@en[[[file:]]]] [[URL]] に対して緩い制限しかかけていませんでしたが、
[[セキュリティー]]上の問題から最近の[[利用者エージェント]]では細かい単位で[[起源]]を設定していたりします。
例えば、[[ディレクトリー]]単位でアクセスを制限したり、[[ファイル]]ごとに完全に別の[[起源]]として扱ったりしています
[SRC[>>23 4.]]。
* スクリプトの起源
[284] [[スクリプト]]は[[スクリプト設定群オブジェクト]]を持っており、[[スクリプト設定群オブジェクト]]は[[起源]]と[[実効スクリプト起源]]を持っています。
この[[起源]]と[[実効スクリプト起源]]は、[[スクリプト]]が作られた時に設定されます。
;; [285] その決定方法は[[スクリプト設定群オブジェクト]]の項を参照してください。
[DEL[
** 所有者により決まる場合
[164] [[スクリプト]]の[[起源]]は[DFN[[RUBYB[所有子]@en[owner]]]]の[[起源]]の[[別名]]であり、
[[実効スクリプト起源]]は[[所有子]]の[[実効スクリプト起源]]の[[別名]]です。
[[所有子]]は[[スクリプト]]の種類により次の通り定まります。 [SRC[>>135]]
:[CODE(HTMLe)@en[[[script]]]] [[要素]]:[CODE(HTMLe)@en[[[script]]]] [[要素]]の所属する [CODE(DOMi)@en[[[Document]]]]
[SRC[>>135]]
:[[事象取扱器内容属性]]:[[属性]]の所属する [CODE(DOMi)@en[[[Document]]]] [SRC[>>135]]
:他の[[スクリプト]]により作られた[[関数]]その他のコード参照:作った[[スクリプト]] [SRC[>>135]]
:[[HTTP]] [[リダイレクト]] (や[[他のプロトコルで等価なもの]]) により返された [CODE(URI)@en[[[javascript]]]] [[URL]]:
[CODE(URI)@en[[[javascript:]]]] [[URL]] に[[リダイレクト]]した [[URL]] [SRC[>>135]]
:[[属性]]にあった [CODE(URI)@en[[[javascript]]]] [[URL]]:
[[属性]]の所属する [CODE(DOMi)@en[[[Document]]]] [SRC[>>135]]
:[[スタイル・シート]]にあった [CODE(URI)@en[[[javascript]]]] [[URL]]:[[スタイル・シート]]の [[URL]] [SRC[>>135]]
:[[閲覧文脈]]が [[navigate]] 中の [CODE(URI)@en[[[javascript]]]] [[URL]] であって、[[利用者]]によって提供されたもの (例えば[[ブックマークレット]]):
[[閲覧文脈]]の[[活性文書]]の [CODE(DOMi)@en[[[Document]]]] [SRC[>>135]]
:[[閲覧文脈]]が [[navigate]] 中の [CODE(URI)@en[[[javascript]]]] [[URL]] であって、[[マーク付け]]によって提供されたもの:
[[URL]] を宣言している[[要素]] (例えば [CODE(HTMLe)@en[[[a]]]] [[要素]]) の [CODE(DOMi)@en[[[Document]]]]
[SRC[>>135]]
:[[閲覧文脈]]が [[navigate]] 中の [CODE(URI)@en[[[javascript]]]] [[URL]] であって、[[スクリプト]]によって提供されたもの:
[[URL]] を提供した[[スクリプト]] [SRC[>>135]]
** その他のものから決まる場合
[223] その他の場合、[[スクリプト]]の[[起源]]・[[実効スクリプト起源]]は次に示すように定まります。
:[[ワーカー]]で走っている[[スクリプト]]:[[ワーカー]]の [CODE(JS)@en[[[location]]]]
[[属性]]の[[絶対URL]]の[[起源]]
(通常はその [[URL]] 自体から決まる[[起源]]・[[実効スクリプト起源]]であるが、
[CODE(URI)@en[[[data]]]] [[URL]] が[[構築子]]に指定されて作られた[[ワーカー]]ではその
[[entry script]] の[[起源]]・[[実効スクリプト起源]]と同じ値となる (>>243)。) [SRC[>>131]]
]DEL]
;; [283] >>282 により削除されました。
** [CODE(DOMi)@en[XMLHttpRequest]] 起源
[234] [DFN[[CODE(DOMi)@en[XMLHttpRequest]][RUBYB[起源]@en[origin]]]]は、基本的には
[[[CODE(DOMi)@en[XMLHttpRequest]]文書]]の[[起源]]です。 [SRC[>>232, >>231]]
つまりは [CODE(DOMi)@en[[[XMLHttpRequest]]]] に対応する [CODE(DOMi)@en[[[Window]]]]
[[オブジェクト]]の[[文書]]の[[起源]]です。
[230] [[ワーカー]]にあっては、 [DFN[[CODE(DOMi)@en[XMLHttpRequest]] [RUBYB[起源]@en[origin]]]]は[[スクリプト]]の[[起源]]です [SRC[>>229]]。
[235] [[匿名フラグ]]が立っている場合は、[[大域的に固有な識別子]]です。 [SRC[>>232]]
[236] [CODE(DOMi)@en[[[XMLHttpRequest]]]] [[起源]]は、 [[XHR]] で[[要求]]する[[資源]]が[[同じ起源]]かどうかの判定に使われます。また、
[CODE(DOMa)@en[[[responseXML]]]] の [CODE(DOMi)@en[[[Document]]]] の[[起源]]としても使われます。
** ワーカー起源
[249] [DFN[[RUBYB[ワーカー起源]@en[worker origin]]]]は、 [CODE(DOMi)@en[[[WorkerGlobalScope]]]]
[[オブジェクト]]が作られるときに決まる[[起源]]です。 [SRC[>>248]]
[[エントリー・スクリプト]]の[[起源]]だったり、 [CODE(DOMi)@en[[[SharedWorker]]]]
[[構築子]]の引数として指定された [[URL]] の[[起源]]だったりします。
>>246 で導入されました。
* [CODE(DOMi)@en[Document]] オブジェクトの起源
[177] [CODE(DOMi)@en[[[Document]]]] [[オブジェクト]]の[[起源]]は次の通り定まります。
[FIG(list)[
- [165] [[閲覧文脈]]中にある場合であって [CODE(DOMi)@en[[[Document]]]]
作成時に[[閲覧文脈]]の[[砂箱化起源閲覧文脈フラグ]]が設定された場合 [SRC[>>135]]
-- '''[[起源]]''': [CODE(DOMi)@en[[[Document]]]] が作られた時に割り当てられた大域的に固有な識別子
-- '''[[実効スクリプト起源]]''': 初期状態では[[起源]]の[[別名]]
- [168] [[ネットワーク]]から供給されたもので、 [[URL scheme]] が[[server-based naming authority]]を持つものの場合
[SRC[>>135]]
-- '''[[起源]]''': [[[CODE(DOMi)@en[Document]]の番地]]の[[起源]]の[[別名]]
-- '''[[実効スクリプト起源]]''': 初期状態では[[起源]]の[[別名]]
- [171] [CODE(URI)@en[[[data:]]]] [[URL]] から生成された場合 [SRC[>>135]]
-- [169] [[HTTP]] [[リダイレクト]] (や[[他のプロトコルの等価なもの]]) で返された
--- [DEL['''[[起源]]''': [CODE(URI)@en[[[data:]]]] [[URL]] に[[リダイレクト]]した [[URL]] の[[起源]]の[[別名]]]]
--- [DEL['''[[実効スクリプト起源]]''': 初期状態では[[起源]]の[[別名]]]]
--- [269] [CITE@en[Web Applications 1.0 r7881 Security: data: URLs shouldn't get the origin of a redirector, since that redirector might be tricked into redirecting a data: URLs by a hostile origin, thus letting that hostile origin expose a same-origin data: URL.]] ([TIME[2013-06-01 05:13:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=7880&to=7881>
により >>254 に変更 ([[セキュリティ]]上の理由)
-- [170] 他の [CODE(DOMi)@en[[[Document]]]] や[[スクリプト]]にあった場合
--- '''[[起源]]''': [[navigation]] を始めた [CODE(DOMi)@en[[[Document]]]] や[[スクリプト]]の[[起源]]の[[別名]]
--- '''[[実効スクリプト起源]]''': 初期状態では [[navigation]] を始めた [CODE(DOMi)@en[[[Document]]]]
や[[スクリプト]]の[[起源]]の[[別名]]
- [172] [[[CODE(DOMi)@en[Document]]の番地]]が [CODE(URI)@en[[[about:blank]]]] の場合
-- [128] [[閲覧文脈]]が作られた時に割り当てられた[[起源]]
--- [129] 新しい[[閲覧文脈]]が[[作成子閲覧文脈]]なら、 [SRC[>>127]]
---- '''[[起源]]''': [[作成子[CODE(DOMi)@en[Document]]]]の[[起源]]の[[別名]]
---- '''[[実効スクリプト起源]]''': [[作成子[CODE(DOMi)@en[Document]]]]の[[実効スクリプト起源]]の[[別名]]
--- [130] そうでないなら、 [SRC[>>127]]
---- '''[[起源]]''': 新しい[[閲覧文脈]]が作られた時に割り当てらられた大域的に固有な識別子
---- '''[[実効スクリプト起源]]''': [[起源]]の[[別名]]
- [167] [CODE(URI)@en[[[javascript:]]]] [[URL]] から生成された場合 [SRC[>>135]]
-- '''[[起源]]''': [CODE(URI)@en[[[javascript:]]]] [[URL]] への [[navigation]] が行われた[[閲覧文脈]]の[[活性文書]]の[[起源]]の[[別名]]
-- '''[[実効スクリプト起源]]''': 初期状態では[[起源]]の決定に使ったのと同じ[[文書]]の[[実効スクリプト起源]]の[[別名]]
- [173] [CODE(HTMLe)@en[iframe]] [[[CODE(HTMLa)@en[srcdoc]]文書]]の場合 [SRC[>>135]]
-- '''[[起源]]''': [[閲覧文脈]]の[[閲覧文脈包含子]]の [CODE(DOMi)@en[[[Document]]]] の[[起源]]の[[別名]]
-- '''[[実効スクリプト起源]]''': [[閲覧文脈]]の[[閲覧文脈包含子]]の [CODE(DOMi)@en[[[Document]]]] の[[実効スクリプト起源]]の[[別名]]
- [237] [CODE(DOMi)@en[[[XMLHttpRequest]]]] で作られた場合
-- '''[[起源]]''': [[[CODE(DOMi)@en[XMLHttpRequest]]起源]] (>>234)
-- '''[[実効スクリプト起源]]''': 初期状態では[[起源]]の[[別名]] [SRC[>>239]]
- [255] [CODE(JS)@en[[[new]] [[Document]]()]] [SRC[>>253]]
-- '''[[起源]]''': [[大域オブジェクト]]に関連付けられた[[文書]]の[[起源]]の[[別名]]
-- '''[[実効スクリプト起源]]''': [[大域オブジェクト]]に関連付けられた[[文書]]の[[実効スクリプト起源]]の[[別名]]
- [256] [CODE(DOMm)@en[[[createDocument]]]], [CODE(DOMm)@en[[[createHTMLDocument]]]] [SRC[>>253]]
-- '''[[起源]]''': [[文脈オブジェクト]]に関連付けられた[[文書]]の[[起源]]の[[別名]]
-- '''[[実効スクリプト起源]]''': [[文脈オブジェクト]]に関連付けられた[[文書]]の[[実効スクリプト起源]]の[[別名]]
- [254] 特段の規定がない場合、 [SRC['''>>253''', >>135]]
-- [175] 例えば [CODE(URI)@en[[[data:]]]] [[URL]] を[[利用者]]が指定した場合
-- [176] [DEL[例えば [CODE(DOMm)@en[[[createDocument]]]] で作られた場合]]
--- [257] これは [[HTML Living Standard]] で例示されていましたが、後に [[DOM Living Standard]]
で規定が追加されています (>>256)。
-- [238] '''[[起源]]''': [CODE(DOMi)@en[[[Document]]]] が作られた時に割り当てられた大域的に固有な識別子
-- [239] '''[[実効スクリプト起源]]''': 初期状態では[[起源]]の[[別名]]
-- [174] 本項は [[HTML Living Standard]] で最初に規定され、次に [[DOM Living Standard]]
でも規定され、 [CITE@en[Web Applications 1.0 r7732 Defer to DOM.]] ([TIME[2013-03-07 04:51:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=7731&to=7732>
で [[DOM]] の規定を参照するよう変更されました。
]FIG]
[228] [[実効スクリプト起源]]は [CODE(DOMi)@en[[[Document]]]] の作成の時点ではここに示した通りですが、
[CODE(JS)@en[[[document.domain]]]] [[属性]]によって変更することもできます。
* スタイルシートの起源
[FIG(list)[
- [273] [CODE(CSS)@en[[[@import]]]] で参照されている[[スタイルシート]] [SRC[>>272]]
-- [[輸入]]元の[[スタイルシート]]の[[起源]]と同じ
]FIG]
* オブジェクトの起源
[178] [[HTML]] では次の各種オブジェクトの[[起源]]が定義されています [SRC[>>135]]。
これらについては[[実効スクリプト起源]]は意味を持たないため定義されていません。
[FIG(list)[
- [179] [CODE(HTMLe)@en[[[img]]]] [[要素]]の[[画像]]について
-- [181] 画像データが [[CORS-cross-origin]] な場合
--- [[画像]]が作られた時に割り当てられた大域的に固有な識別子
-- [182] 画像データが [[CORS-same-origin]] な場合
--- [CODE(HTMLe)@en[[[img]]]] [[要素]]の [CODE(DOMi)@en[[[Document]]]] の[[起源]]の[[別名]]
- [183] [CODE(HTMLe)@en[[[audio]]]] [[要素]]と [CODE(HTMLe)@en[[[video]]]] [[要素]]について
-- [184] [[媒体データ]]が [[CORS-cross-origin]] な場合
--- [[画像]]が作られた時に割り当てられた大域的に固有な識別子
-- [185] [[媒体データ]]が [[CORS-same-origin]] な場合
---- [[媒体要素]]の [CODE(DOMi)@en[[[Document]]]] の[[起源]]の[[別名]]
- [186] [[フォント]]について
-- [187] [[ダウンロード可能Webフォント]]の場合
--- [[フォント]]を得るために使った ([[リダイレクト]]後の) [[絶対URL]]の[[起源]]の[[別名]]
-- [188] 局所的にインストールされたシステムの[[フォント]]の場合
--- [[フォント]]が使われている [CODE(DOMi)@en[[[Document]]]] の[[起源]]の[[別名]]
]FIG]
;; [189] 定義が必要ない場合、例えば [CODE(HTMLe)@en[[[object]]]] [[要素]]に表示される[[画像]]の場合の[[起源]]は定義されていません。
* 歴史
[227] [[起源]] (や [[SOP]]) の概念は [[Netscape]] による [[JavaScript]] の開発以来、
次第に明確になってきましたが、長らく仕様として文書化されるには至りませんでした。
しかし2000年代の後半になり、ようやく [[RFC 6454]] と [[HTML]] によってその仕様が正確に記述されることとなりました。
[REFS[
- [23] '''[CITE@en[RFC 6454 - The Web Origin Concept]] ([TIME[2011-12-12 09:13:37 +09:00]] 版) <http://tools.ietf.org/html/rfc6454>'''
- [224] [CITE[IRC logs: freenode / #whatwg / 20120524]]
( ([TIME[2012-06-02 23:29:34 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20120524>
- [225] [CITE@en[Web Applications 1.0 r7141 Recast how origins are defined to explicitly use the concept of an origin 'alias' and fix the definitions for about:blank docs to use this new definition.]]
( ([TIME[2012-06-23 07:37:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7140&to=7141>
- [244] [CITE@en[Web Applications 1.0 r7180 Make data: URLs officially work in Workers.]] ([TIME[2012-07-18 06:53:00 +09:00]] 版) <http://html5.org/tools/web-apps-tracker?from=7179&to=7180>
]REFS]
** RFC 6454 における同一起源の定義
[81] 2つの[[起源]]が「[RUBYB[同じ]@en[same]]」である時、その時に限って[RUBYB[同一]@en[identical]]です。
具体的には、
- [82] 2つの[[起源]]が共に [[scheme]]/[[host]]/[[port]] の[[3項組]]であるなら、
3つがそれぞれ[RUBYB[同一]@en[identical]]であるなら、その場合に限って[RUBYB[同じ]@en[same]]です。
- [83] 大域的に固有な識別子は、 [[scheme]]/[[host]]/[[port]] の[[3項組]]と[RUBYB[同じ]@en[same]]であることはありません。
... と定義されています。 [SRC[>>23 5.]]
;; [87] あまり意味がないからか自明だからか仕様上明記されていませんが、[[起源]]が共に大域的に固有な識別子である時も、
それが同じ値であるなら、その場合に限って、同じ[[起源]]であるはずです。
[84] 2つの[[URL]]は、その[[起源]]が[RUBYB[同じ]@en[same]]なら、[RUBYB[[[同一起源]]]@en[same-origin]]です。
[SRC[>>23 5.]]
;; [86] 同じ[[URL]]であるからといって[[起源]]も同じとは限りません。例えば [CODE(URI)@en[[[data:]]]]
[[URL]] は毎回新しい大域的に固有な識別子が割り振られるため、違う[[起源]]になります。
** RFC 6454 における URI の起源の定義
[26] ある [[RFC 3986]] [[URI]] の[[起源]]は次の手順により求められます [SRC[>>23 4.]]。
[FIG(steps)[
= [27] [[URL]] が[[階層的]]でない、または[[絶対URL]]でないなら、新しい大域的に固有な識別子を生成し、
それを返します。
= [28] [VAR[url-scheme]] を、 [[URL]] の [[scheme]] 部分を[[小文字]]化したものとします。
= [29] 実装が [VAR[url-scheme]] により表される[[プロトコル]]に対応していないなら、
新しい大域的に固有な識別子を生成し、それを返します。
= [30] [VAR[url-scheme]] が [CODE(URI)@en[[[file]]]] なら、
[[実装定義]]の値を返して[['''構いません''']]。
= [32] [VAR[url-host]] を、 [[URL]] の [[host]] 部分を[[小文字]]化したものとします。
-- [[小文字]]化には [[RFC 4790]] の [CODE[[[i;ascii-casemap]]]] を使います。
-- [[IDNA]] により [[Uラベル]]は既に[[Aラベル]]に変換されているものと仮定しています。
= [33] [[URL]] に [[port]] 部分がなければ、
== [VAR[url-port]] を、 [VAR[url-scheme]] で表される[[プロトコル]]の[[既定のポート]]とします。
= [34] そうでなければ、
== [VAR[url-port]] を、 [[URL]] の [[port]] 部分とします。
= [35] ([VAR[url-scheme]], [VAR[url-host]], [VAR[url-port]]) の[[3項組]]を返します。
]FIG]
;; [36] 仕様上明記されていませんが、 >>32 や >>34 で [[host]] や [[port]] を[[正準化]]する必要がありそうです。
;; [121] 仕様上厳密には [[RFC 3986]] [[URI]] に対して[[起源]]が定義されており、
[[URI]] でない [[URL]] ([[IDN]] を使ったものなど) はまず [[URI]] に変換 (できれば) する必要があります。
[[URI]] に変換できない [[URL]] については[[起源]]が定義されていないことになります。
もちろん現実の [[Webブラウザー]]においては、定義を自然に拡張した [[URL]]
一般について同様に[[起源]]が定義されることになります。
;; [163] 以前は [[HTML]] の仕様書で [[URL]] に対して[[起源]]が定義されていましたが、
[[RFC]] に委ねるとして削除されてしまいました。
** RFC 6454 の廃止
[209] [CITE@en-US[Cross-Origin Resource Sharing]]
( ([TIME[2012-03-03 06:35:44 +09:00]] 版))
<http://dvcs.w3.org/hg/cors/raw-file/tip/Overview.html#origin-request-header>
[240] [CITE@en[Errata for The Web Origin Concept]]
( ([[Anne van Kesteren]] 著, [TIME[2012-06-08 16:31:21 +09:00]] 版))
<http://lists.w3.org/Archives/Public/www-archive/2012Jun/0001.html>
[241] [CITE[IRC logs: freenode / #whatwg / 20120619]]
( ([TIME[2012-07-04 21:30:06 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20120619#l-978>
[245] [CITE[IRC logs: freenode / #whatwg / 20120718]]
( ([TIME[2012-07-21 12:31:45 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20120718#l-432>
[246] [CITE@en[Web Applications 1.0 r7236 Recast how the origin handling is done for data: URLs in workers, and fix the shared worker origin handling for data: URLs so that you can actually reconnect to a data: shared worker.]]
( ([TIME[2012-08-10 03:29:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7235&to=7236>
[247] [CITE@en[Web Applications 1.0 r7414 Require Cookies and Origin if you implement HTTP.]]
( ([TIME[2012-09-27 07:52:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7413&to=7414>
[250] [CITE[''''''[''''''whatwg'''''']'''''' Need to define same-origin policy for WebIDL operations/getters/setters]]
( ([TIME[2012-12-16 03:43:41 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-December/038358.html>
[251] [CITE[Define Document's origin. In related news: we now have an HTML dependenc... · 922830c · whatwg/dom]]
( ([TIME[2012-12-21 13:24:34 +09:00]] 版))
<https://github.com/whatwg/dom/commit/922830c931d8b04d52e3482dfd9985cdcead43fe>
[252] [CITE[Define what origin and effective script origin are in various Document c... · 2f2cdf4 · whatwg/dom]]
( ([TIME[2012-12-21 13:27:21 +09:00]] 版))
<https://github.com/whatwg/dom/commit/2f2cdf4a29b7ed299c38f60eb35ed98918a7f439>
[258] [CITE@en-US[Cross-Origin Resource Sharing Standard]]
( ([TIME[2012-11-10 10:50:00 +09:00]] 版))
<http://fetch.spec.whatwg.org/>
[259] [CITE[IRC logs: freenode / #whatwg / 20130401]]
( ([TIME[2013-04-04 20:18:43 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130401#l-615>
[260] [CITE[IRC logs: freenode / #whatwg / 20130416]]
( ([TIME[2013-04-20 15:41:12 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130416#l-72>
[261] <https://github.com/whatwg/fetch/commit/05a8acd40d6f65c1a6dc830896cd8366a99d267d>
[262] [CITE[IRC logs: freenode / #whatwg / 20130418]]
( ([TIME[2013-04-25 21:57:07 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130418#l-839>
[263] [CITE[IRC logs: freenode / #whatwg / 20130508]]
( ([TIME[2013-05-16 21:30:10 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130508#l-108>
[264] [CITE[''''''[''''''websec'''''']'''''' RFC6454 (Origin) vs URI schemes unlike "http"]]
( ([TIME[2013-03-07 01:20:13 +09:00]] 版))
<http://www.ietf.org/mail-archive/web/websec/current/msg01512.html>
[265] [CITE@en-US[Fetch Standard]]
( ([TIME[2013-05-22 07:29:17 +09:00]] 版))
<http://fetch.spec.whatwg.org/#http-origin-header>
[266] [CITE[''''''[''''''whatwg'''''']'''''' Reorganizing and fixing "origin"]]
( ([TIME[2013-05-22 07:53:17 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-May/039599.html>
[267] [CITE[''''''[''''''whatwg'''''']'''''' Reorganizing and fixing "origin"]]
( ([TIME[2013-05-22 07:53:17 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-May/039599.html>
[268] [CITE@en[Web Applications 1.0 r7873 Allow data: URLs to be given download='' attribute names.]]
( ([TIME[2013-05-31 07:05:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7872&to=7873>
[270] [CITE[''''''[''''''whatwg'''''']'''''' Reorganizing and fixing "origin"]]
( ([TIME[2013-07-13 09:28:35 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-July/040050.html>
[271] [CITE[''''''[''''''whatwg'''''']'''''' Fetch: Origin header]]
( ([TIME[2013-07-23 21:15:30 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-July/040196.html>
[274] [CITE@en[Bug 20701 – Location security restrictions are over-restrictive]]
( ([TIME[2013-08-19 07:16:36 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=20701>
[276] [CITE@en[Web Applications 1.0 r8307 Fix the rules on what 'Origin' header to use when navigating to a resource in an <iframe>, <object>, <embed>, or <frame> element, so that the latter two are not forgotten.]]
( ([TIME[2013-11-23 03:48:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8306&to=8307>
[277] [CITE@en[Bug 23005 – IDNA-related bits should instead reference terminology from http://url.spec.whatwg.org/]]
( ([TIME[2013-11-23 11:21:51 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=23005>
[278] [CITE@en[Web Applications 1.0 r8320 Clarify what it means for an image to have an origin]]
( ([TIME[2013-12-03 05:27:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8319&to=8320>
[279] [CITE@ja[Using Self-Hosted Objects - Facebook開発者]]
( ([TIME[2013-12-11 02:55:56 +09:00]] 版))
<https://developers.facebook.com/docs/opengraph/using-objects/>
[280] [CITE[Flashと特定ブラウザの組み合わせでcross originでカスタムヘッダ付与が出来てしまう問題が未だに直っていない話]]
( ([TIME[2014-02-19 08:05:01 +09:00]] 版))
<https://gist.github.com/mala/8857629>
[281] [CITE@en[446344 – Implement Origin header CSRF mitigation]]
( ([TIME[2014-02-19 08:21:51 +09:00]] 版))
<https://bugzilla.mozilla.org/show_bug.cgi?id=446344>
[282] [CITE@en[Web Applications 1.0 r8262 Move the spec from a stack of incumbent scripts to a stack of script settings object. This should in theory have no concrete effects (though I may have changed some of the origin used for Web Workers started from document.domain-affected scripts that were called from other scripts with different original origins).]]
( ([TIME[2013-11-09 08:21:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=8261&to=8262>
[290] [CITE[IRC logs: freenode / #whatwg / 20140426]]
( ([TIME[2014-04-28 14:06:27 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140426>
[291] [CITE@en[Bug 26152 – Would it not be better to define origin as identifier, tuple, or, alias? That alias is actually a link to another origin is not super clear this way.]]
( ([TIME[2014-06-26 01:45:08 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=26152>
[294] 2014年には [[URL]] の[[起源]]が [[URL Standard]] で定義されるようになり [SRC[>>307]]、
実質的に [[URL Standard]]、[[Fetch Standard]]、[[HTML Standard]]
によって [[RFC 6454]] は廃止されました [SRC[>>308, >>309]]。
[REFS[
- [307] [CITE[Define URL's origin · c65766a · whatwg/url]] ([TIME[2014-07-01 04:34:21 +09:00]] 版) <https://github.com/whatwg/url/commit/c65766a674c6f4c3c521b6dc843f07c1fd23b4d2>
- [308] [CITE[Fix origin xref mess; obsolete ORIGIN · d94f125 · whatwg/fetch]] ([TIME[2014-07-01 04:49:04 +09:00]] 版) <https://github.com/whatwg/fetch/commit/d94f125e97592c078e023d5490b65b4210ebe8dc>
- [309] [CITE@en[ORIGIN is no more · d354f76 · whatwg/dom]]
( ([TIME[2014-08-07 05:26:04 +09:00]] 版))
<https://github.com/whatwg/dom/commit/d354f769a18fd567c9c3d763116048ab6c2d383e>
- [1] [CITE@en[Opaque identifier is a type, not a value https://www.w3.org/Bugs/Public/... · 09d81f5 · whatwg/url]] ([TIME[2014-09-09 03:50:52 +09:00]] 版) <https://github.com/whatwg/url/commit/09d81f55e4a788980101fe7f88b1e3c6c8fe7435>
]REFS]