リファラーの重要性
HTTP要求には、現在のトラフィックのソースを示す参照ヘッダーがあります。たとえば、www.sina.com.cn/sports/のリンクをクリックして、cctv.comのホームページに到達し、リファラーはwww.sina.com.cn/sports/に到達します。 JavaScriptでは、document.referrerを使用して同じ情報を取得できます。この情報を通して、訪問者が現在のページにどのようなチャネルが来るかを知ることができます。これは、Web分析にとって非常に重要です。これは、さまざまなチャネルによってもたらされるトラフィックの分布と、すべてがこのリファラー情報を分析することによって取得されるキーワードなどを知ることができます。
ただし、さまざまな理由で、JavaScriptで読み取られるリファラーが空の文字列である場合があります。どのような状況を紹介するかを要約しましょう。
ページナビゲーションの場所オブジェクトを変更します
ロケーションオブジェクトは、ページナビゲーションの非常に実用的なオブジェクトです。なぜなら、彼はあなたがURLの一部のみを変更できるからです。たとえば、CNドメイン名からCOMドメイン名に切り替えて、他の部品は変更されていません。
コードコピーは次のとおりです。
window.location.hostname = "embles.com";
ただし、ページナビゲーションによるページナビゲーションの方法を変更すると、IEに基づくリファラーが失われます。
IE5.5+の下の空の文字列を返します
Chrome 3.0+、Firefox 3.5、Opera9.6、Safari 3.2.2はすべて、ソースWebページに正常に戻ります
window.openで新しいウィンドウを開きます
例:
コードコピーは次のとおりです。
<a href = "#" onclick = "window.open( 'http://www.google.com')">アクセスGoogle </a>
このリンクをクリックすると、新しいウィンドウでGoogle Webサイトを開きます。
コードコピーは次のとおりです。
JavaScript:alert(document.referrer)
テスト結果:
IE5.5+の下の空の文字列を返します
Chrome 3.0+、Firefox 3.5、Opera9.6、Safari 3.2.2はすべて、ソースWebページに正常に戻ります
同じドメイン名の下でこの方法でリダイレクトされている場合、windoww.openerオブジェクトにアクセスして、失われた紹介者情報を取得できます。コードは次のとおりです。
コードコピーは次のとおりです。
<script type = "text/javascript">
var referrer = document.referrer;
if(!referrer){
試す {
if(window.opener){
// IEの下でクロスドメインの場合、許可例外がスローされます
// SafariとChromeにはプロパティがありません
referrer = window.opener.location.href;
}
}
catch(e){}
}
</script>
ドメインを横断すると、無力になります〜
マウスをドラッグして新しいウィンドウを開きます
マウスドラッグアンドドロップは、非常に人気のあるユーザーの習慣です。ただし、この方法で開かれたページは、基本的にすべてのリファラーが失われます。さらに、この場合、window.openerメソッドを使用して紛失したリファラーを取得することは不可能です。
テスト済み:
Maxthon 2.5.2、FirefoxのFiregestureプラグイン、Chrome 3.0+、Opera 9.6、Safari 3.2。
フラッシュの内部リンクをクリックします
Flashをクリックして別のWebサイトに到達すると、リファラーの状況はより厄介です。
IEでは、クライアントJavaScriptのReferrerを介して読み取りますが、トラフィック監視ソフトウェアを使用してそれを見ると、実際には、HTTPリクエストの参照ヘッダーに値があります。これは、IE実装のバグかもしれません。同時に、この値は、ソースWebページのアドレスではなく、フラッシュファイルのアドレスを指します。
Chrome 4.0の下でフラッシュをクリックして新しいウィンドウに到達した後、リファラーはソースWebページのアドレスではなく、フラッシュファイルのアドレスも指します。
Chrome 3.0とSafari 3.2は同じであり、両方とも紹介情報を失います。
Operaは、Firefoxのように、リファラーの値はソースWebページのアドレスです。
httpsはhttpにジャンプします
HTTPS WebサイトからHTTP Webサイトにジャンプするとき、ブラウザはリファラーを送信しません。これらの主要なブラウザの動作は同じです。
たとえば、HTTPSでGoogleリーダーまたはGmailを使用する場合、リンクをクリックして技術的に移動し、そのようなアクセスとURLを直接入力する違いはありません。
広告トラフィック監視に対するリファラー損失の影響
リファラーが紛失した場合、Web分析は情報の非常に重要な部分を失います。特に広告トラフィックの場合、実際のソースを知ることは不可能です。現在、Google AdSense広告を使用している中国の多くのWebサイトは、広告リンクを開くためにオープンしているため、IEが現在最大の市場シェアを持つブラウザであることがわかります。 。したがって、多くのトラフィック統計ツールは、トラフィックのこの部分を「直接トラフィック」として分類します。これは、URLを直接入力するユーザーと同等です。
この場合、広告を提供するときに、ランディングページのURLに特定の追跡パラメーターをAD Plagiarに追加できるようにする必要があります。
たとえば、フラッシュ広告がクリックされた場合、http://www.example.com/に到達するために、このトラフィックがどのチャネルから来るかを監視します。 http:// www.example.com/?src=sinaはこの方法と同様に、JavaScriptコードを使用してランディングページにこのSRCパラメーターを抽出して、広告のソース情報を取得できるようにします。
Google AdWordsを提供する場合、バックグラウンドシステムには「自動タグ」オプションが有効になっている場合、Googleがすべての広告のランディングページを生成すると、このパラメーターがGoogleアナリティクスバックエンドからデータを統合できますAdWords Ad BackEnd。これにより、広告トラフィックがどのキャンペーンに対応しているか、どの広告ソースと広告キーワード、その他の情報がどのキャンペーンに対応しているかを知ることができます。実際には上記のアイデアに似ています。 Googleが自動的にURL変更を行ったことだけです。
IEの下の空の参照者への解決策
window.location.hrefメソッドを使用してIEにジャンプする場合、参照値は空です。また、参照者がタグにジャンプした場合、参照者は空になりません。したがって、次のコードはこのIEの問題を解決できます
コードコピーは次のとおりです。
関数gotourl(url){
if(window.vbarray){
var gotolink = document.createelement( 'a');
gotolink .href = url;
document.body.appendChild(gotolink);
gotolink .click();
}それ以外{
window.location.href = url;
}
}
リンクにアクセスするときに参照者を持たないことを禁止します
あるWebサイトからリンクをクリックして別のページを入力すると、ブラウザは参照値をヘッダーに追加して、この訪問のソースページを識別します。しかし、この種のロゴは、ユーザーのプライバシーをリークする場合があります。
•新しく追加されたHTML5ソリューションを使用して、rel = "noreferrer"を使用して、現在noreferrerと宣言します。
•中間ページを使用しますが、実際には、Googleの接続ステアリングであるnoreferrer.jsを使用するなど、リファラーを送信します。
•JavaScriptプロトコルを使用して転送にリンクします。以下の指示を参照してください。
新しいウィンドウはターゲット= "_ blank"に相当します:
コードコピーは次のとおりです。
function open_window(link){
var arg = '/u003cscript/u003location.replace( "' +link+'")/u003c/script/u003e ';
window.open( 'javascript:window.name;'、arg);
}
</code>
接続に目を向けることは、ターゲット= "_ self"に相当します。
コードコピーは次のとおりです。
関数Redirect(link){
var arg = '/u003cscript/u003etop.location.replace( "'+link+'")/u003c/script/u003e';
var iframe = document.createelement( 'iframe');
iframe.src = 'javascript:window.name;';
iframe.name = arg;
document.body.appendChild(iframe);
}
</code>