<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><section><h1>仕様書</h1><refs xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><ul xmlns="http://www.w3.org/1999/xhtml"><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end> <cite xml:lang="en-GB-x-hixie">HTML Standard</cite> (<time>2015-04-25 04:40:19 +09:00</time> 版) <anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://html.spec.whatwg.org/#location">https://html.spec.whatwg.org/#location</anchor-external></li></ul></refs></section><section><h1>性質</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end> この<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>は、 <code class="xattr IDL" xml:lang="en">Unforgeable</code> です <src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>。</p></section><section><h1>取得器</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end> <code class="JS" xml:lang="en">location.href</code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">取得器</anchor>は、次のようにしなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src>。<figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文脈オブジェクト</anchor>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><anchor>関係する<code xmlns="http://www.w3.org/1999/xhtml" class="DOMi" xml:lang="en">Document</code></anchor></f>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">文書の起源</title></f>と<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">入口設定群オブジェクト</anchor>の<f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源</f>が<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">同じ起源ドメイン</anchor>でなければ、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end> <code class="DOMe" xml:lang="en">SecurityError</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">例外</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">投げ</anchor>、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文脈オブジェクト</anchor>の <f xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL<title xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:">Location (DOM)</title></f> に<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL直列化器</anchor>を適用した結果を返します。</li></ol></figure></p></section><section><h1>設定器</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end> <code class="JS" xml:lang="en">location.href</code> の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">設定器</anchor>は、次のようにしなければ<MUST xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">なりません</MUST>
<src xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;2</anchor-internal></src> 。<figure class="steps"><ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end> <var>URL</var> を、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">入口設定群オブジェクト</anchor>に関して、与えられた値の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URLの構文解析</anchor>を行った結果に設定します。</li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end> <var>URL</var> が失敗なら、<ol><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end> <code class="DOMe" xml:lang="en">TypeError</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">例外</anchor>を<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">投げ</anchor>、ここで停止します。</li></ol></li><li><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">文脈オブジェクト</anchor>と <var>結果</var>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">URL記録</anchor>について 
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:"><code xmlns="http://www.w3.org/1999/xhtml" class="DOMi" xml:lang="en">Location</code>-object-setter navigate</anchor> を実行します。</li></ol></figure></p><comment-p xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:10:"><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">設定器</anchor>は<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">同じ起源ドメイン</anchor>かどうかの検査を行いません。ですから、
<code xmlns="http://www.w3.org/1999/xhtml" class="DOMi" xml:lang="en">Location</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">オブジェクト</anchor>にアクセスすることができれば、
任意の<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">起源</anchor>が当該<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">閲覧文脈</anchor>の <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">navigate</anchor> を呼び出すことができます。</comment-p></section><section><h1>参照元</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end> <code class="JS" xml:lang="en">location.href</code> の設定による <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">navigate</anchor> (ページ遷移)
では、通常通り<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照元</anchor> (<code class="HTTP" xml:lang="en">Referer:</code>) が設定されます。
<code class="JS" xml:lang="en">location.hash</code> に限ってこれを抑制する方法はありません。</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end> かわりに、少し手間がかかりますが、 <code class="DOMa" xml:lang="en">referrerpolicy</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">属性</anchor>付きの
<code class="HTMLe" xml:lang="en">a</code> <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">要素</anchor>を作成して <code class="DOMm" xml:lang="en">click</code>
<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">メソッド</anchor>を呼び出すことで、<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">参照元</anchor>を制御しつつ遷移できます。</p></section><section><h1>歴史</h1><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end> <cite>Masato Kinugawa Security Blog: location.hrefの盲点</cite>
( (<time>2012-08-07 01:59:56 +09:00</time> 版))
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="http://masatokinugawa.l0.cm/2012/08/safari-location.href.html">http://masatokinugawa.l0.cm/2012/08/safari-location.href.html</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end> <cite xml:lang="en">Define security around Window, WindowProxy, and Location properly · whatwg/html@acae3df</cite>
(<time>2016-03-13 23:37:36 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/html/commit/acae3df652b382e9f4f1d1b4dc7e08e2b00df821">https://github.com/whatwg/html/commit/acae3df652b382e9f4f1d1b4dc7e08e2b00df821</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end> <cite xml:lang="en">Editorial: non-relative flag got renamed · whatwg/html@d360c27</cite>
(<time>2016-03-31 12:41:51 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/html/commit/d360c27d44c52390441b5910d39e898160ec016d">https://github.com/whatwg/html/commit/d360c27d44c52390441b5910d39e898160ec016d</anchor-external></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end> <cite xml:lang="en">Merge effective script origin into origin · whatwg/html@8a843f2</cite>
(<time>2016-03-31 18:01:12 +09:00</time> 版)
<anchor-external xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resScheme="URI" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:resParameter="https://github.com/whatwg/html/commit/8a843f2169a6864a3024c4329528dccb2051d275">https://github.com/whatwg/html/commit/8a843f2169a6864a3024c4329528dccb2051d275</anchor-external></p></section></body></html>