雑文発散

«前の日記(2015-04-22) 最新 次の日記(2015-04-24)» 編集
過去の日記

2015-04-23 [長年日記]

[JavaScript] JavaScript とリファラの話

HTTP の「リファラ」の綴り「REFERER」は、英語の「referrer」の綴りを間違った(R がひとつ足りない)まま使い始めてしまい、変えるに変えられなくなったので、現在も綴り間違いのまま利用されているというのは有名な話。

その前知識があったので、JavaScript でリファラを取得するプロパティが、正しい綴りを使った document.referrer だったのを知った時には、なんか妙に新鮮だった。

あと、通常は、書き換えることができない document.referer の値なのだが、次のようにすると指定した値を返すことができるのも知った。

document.__defineGetter__('referrer', function() {
  return 'http://example.com/'
});

ブラウザの console で、document.referrer を叩いて値を確認して、

document.referrer
"https://www.google.co.jp/"

前述の方法で返り値を定義して、

document.__defineGetter__('referrer', function() {
  return 'http://example.com/'
});
undefined

再度、document.referrer を確認すると、指定した「http://example.com/」が返ってくることが分かる。

document.referrer
"http://example.com/"

ただ、この __defineGetter__ は Non-standard かつ Deprecated の扱いとのことなので、利用は控えめに。まぁ、MDN の Browser compatibility の欄を見ると、ほとんどのブラウザで動作はするようだけど。