* 仕様書

[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]

* 性質

[14] この[[属性]]は、 [CODE(xattr IDL)@en[Unforgeable]] です [SRC[>>2]]。

* 取得器

[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]] 。
[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]] を呼び出すことができます。

* 参照元

[17] [CODE(JS)@en[location.href]] の設定による [[navigate]] (ページ遷移)
では、通常通り[[参照元]] ([CODE(HTTP)@en[Referer:]]) が設定されます。
[CODE(JS)@en[location.hash]] に限ってこれを抑制する方法はありません。

[18] かわりに、少し手間がかかりますが、 [CODE(DOMa)@en[referrerpolicy]] [[属性]]付きの
[CODE(HTMLe)@en[a]] [[要素]]を作成して [CODE(DOMm)@en[click]]
[[メソッド]]を呼び出すことで、[[参照元]]を制御しつつ遷移できます。

* 歴史

[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>

[15] [CITE@en[Editorial: non-relative flag got renamed · whatwg/html@d360c27]]
([TIME[2016-03-31 12:41:51 +09:00]] 版)
<https://github.com/whatwg/html/commit/d360c27d44c52390441b5910d39e898160ec016d>

[16] [CITE@en[Merge effective script origin into origin · whatwg/html@8a843f2]]
([TIME[2016-03-31 18:01:12 +09:00]] 版)
<https://github.com/whatwg/html/commit/8a843f2169a6864a3024c4329528dccb2051d275>