それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

リダイレクトを使ってリファラを隠す

Location によるリダイレクトだと、リファラを隠せない

だからどうする?何か他に方法はあるか。

これ?リファラを隠すなら refresh

Locationの代わりにHTML書くのでいけるか。。。ヘッダがいいなぁ

<meta http-equiv="refresh" content="0;URL='http://thetudors.example.com/'" />   

http-equiv? ってことはヘッダに書けるんじゃね?

え?でもまてよ。HTTP-EQUIV つまり、 HTTP Header Equivalent ってことはHTTPヘッダと同等?つまり、HTTPヘッダに書いても同じなんじゃないの?そっかやってみよう

やってみた

<?php
$url = $_GET["url"];
header('Refresh: 0; URL=' . $url);


できた

実行結果

HTTP/1.0 200 OK
Date: Sun, 26 May 2013 13:19:42 GMT
Server: Apache
Refresh: 0; URL=https://www.yahoo.co.jp/
Content-Type: text/html
X-Cache: MISS from ss1.xrea.com
Connection: close

ブラウザもちゃんとリダイレクトした

ブラウザもちゃんとリダイレクトして、しかも、リファラを送らない。
こりゃ便利。

欠点

どうやら、これらの仕様は、img src や script src には使えない模様 text/html の場合にのみ有効になるらしい。なんかセキュリティ/issue があるらしく、使えないらしいです。

できる リンククリック、xmlhttp、iframe
出来ない img[src] script[src] video[src] など

ドキュメントとしてつまりHTMLDocumentオブジェクトが生成されるなら行ける、生成されないなら出来ない。あとchromeOpera/IEで動いたから殆どの場合のブラウザで大丈夫

でも、充分ですよね。リンク書くだけででリファ消えるんだから、リファラすにはもってこいです。

その他の方法

HTTPS→HTTP HTTPSHTTPSだとリファラを送らないのではなかったですか?

なのでHTTPS サイト中から http ページにリンクしていた時もリファラを送りません。