/
898.txt
41 lines (32 loc) · 2.11 KB
/
898.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
* 仕様書
[REFS[
- [2] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-04-25 04:40:19 +09:00]] 版) <https://html.spec.whatwg.org/#location>
]REFS]
* 取得器
[5] [CODE(JS)@en[location.href]] の[[取得器]]は、次のようにしなければ[MUST[なりません]]
[SRC[>>2]]。
[FIG(steps)[
= [6] [[文脈オブジェクト]]の[F[[[関係する[CODE(DOMi)@en[Document]]]]]]の[F[実効スクリプト起源]]と[[入口設定群オブジェクト]]の[F[実効スクリプト起源]]が[[同じ起源]]でなければ、
== [7] [CODE(DOMe)@en[SecurityError]] [[例外]]を[[投げ]]、ここで停止します。
= [8] [[文脈オブジェクト]]の [F[URL][Location (DOM)]] に[[URL直列化器]]を適用した結果を返します。
]FIG]
* 更新
[3] [CODE(JS)@en[location.href]] の[[設定器]]は、次のようにしなければ[MUST[なりません]]
[SRC[>>2]] 。 [CODE(DOMi)@en[[[Location]]]] [[オブジェクト]]における
[FIG(steps)[
= [9] [VAR[URL]] を、[[入口設定群オブジェクト]]に関して、与えられた値の[[URLの構文解析]]を行った結果に設定します。
= [10] [VAR[URL]] が失敗なら、
== [11] [CODE(DOMe)@en[TypeError]] [[例外]]を[[投げ]]、ここで停止します。
= [12] [[文脈オブジェクト]]と [VAR[結果]]の [[URL記録]]について
[[[CODE(DOMi)@en[Location]]-object-setter navigate]] を実行します。
]FIG]
;; [13] [[設定器]]は[[同じ起源]]かどうかの検査を行いません。ですから、
[CODE(DOMi)@en[Location]] [[オブジェクト]]にアクセスすることができれば、
任意の[[起源]]が当該[[閲覧文脈]]の [[navigate]] を呼び出すことができます。
* 歴史
[1] [CITE[Masato Kinugawa Security Blog: location.hrefの盲点]]
( ([TIME[2012-08-07 01:59:56 +09:00]] 版))
<http://masatokinugawa.l0.cm/2012/08/safari-location.href.html>
[4] [CITE@en[Define security around Window, WindowProxy, and Location properly · whatwg/html@acae3df]]
([TIME[2016-03-13 23:37:36 +09:00]] 版)
<https://github.com/whatwg/html/commit/acae3df652b382e9f4f1d1b4dc7e08e2b00df821>