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オブジェクトが生成されるなら行ける、生成されないなら出来ない。あとchromeとOpera/IEで動いたから殆どの場合のブラウザで大丈夫
でも、充分ですよね。リンク書くだけででリファ消えるんだから、リファラすにはもってこいです。