前回は,
locationオブジェクト
locationオブジェクトの基本
JavaScriptにおいてURLを取り扱う最も基本的な要素の1つが,
locationオブジェクトの代表的なプロパティおよびメソッドを下表に示します。
locationオブジェクトの代表的なプロパティおよびメソッド
メソッド | 説明 |
---|---|
assign | 引数で指定されたURLへ移動する |
reload | ページをリロードする。引数でtrueが指定された場合は, |
replace | 引数で指定されたURLへ移動するが, |
プロパティ | 説明 |
---|---|
protocol | URLのプロトコル部分 |
host | URLのホスト部分。ポート番号があればそれも含む |
hostname | URLのホスト部分。ポート番号は含まない |
port | URLのポート番号部分。デフォルトポートの場合は, |
pathname | URLのパス名部分 |
search | URLの?以降のクエリ文字列 |
hash | URLの#以降 |
href | 完全なURL全体 |
現在,
IE10以下などではlocation.
if( location.origin === undefined ){
location.origin = location.protocol + "//" + location.hostname + (location.port ? ":" + location.port : "");
}
console.log( location.origin ); // 現在のオリジンを表示
たとえば,
- protocol → http:
- host → example.
jp:8080 - hostname → example.
jp - port → 8080
- pathname → /list/
- search → ?file=news.
html - hash → #recent
- href → http://
example. jp:8080/ list/?file=news. html#recent - origin → http://
example. jp:8080
location. href以外に現在のドキュメントのURLを取得するためのインタフェース
現在のドキュメントの完全なURLを取得するためには,
- document.
URL - document.
documentURI (IE10, 11ではサポートされていない) - document.
URLUnencoded (IE7~IE11のみサポート)
document.
余談ですが,
こういった,
URLに認証情報が含まれている場合の注意点
document.
たとえば,user
”,pass
”
- location.
href → http:// example. jp/ (認証情報を含まないURL) - document.
documentURI → http:// user:pass@example. jp/ (ユーザー名およびパスワードを含んだURL)
「Basic認証の認証情報が含まれるURLへ攻撃者が被害者を誘導することで,
if( document.documentURI && location.href !== document.documntURI ){
// URLに認証情報が含まれるときは強制的に認証なしのURLをリロードする
location.href = location.href;
}
- ※1)
- 以下のブログエントリを参照。
- Masato Kinugawa Security Blog:location.
hrefの盲点 - Masato Kinugawa Security Blog:ホストの前に文字が置けることを忘れるな
- Masato Kinugawa Security Blog:location.