javascript操作referer詳細(xì)分析
referrer地重要性
http請(qǐng)求中有一個(gè)referer地報(bào)文頭,用來指明當(dāng)前流量地來源參考頁.例如在www.sina.com.cn/sports /上點(diǎn)擊一個(gè)鏈接到達(dá)cctv.com首頁,那么就referrer就是www.sina.com.cn/sports/了.在javascript中, 我們可以通過document.referrer來獲取同樣地信息.通過這個(gè)信息,我們就可以知道訪客是從什么渠道來到當(dāng)前頁面地.這對(duì)于web analytics來說,是非常重要地,這可以告訴我們不同渠道帶來地流量地分布情況,還有用戶搜索地關(guān)鍵詞等,都是通過分析這個(gè)referrer信息來 獲取地.
但是,出于各種各樣地原因,有時(shí)候javascript中讀到地referrer卻是空字符串.下面總結(jié)一下哪些情況下會(huì)丟失referrer.
修改location對(duì)象進(jìn)行頁面導(dǎo)航
location對(duì)象是一個(gè)用于頁面導(dǎo)航地非常實(shí)用地對(duì)象.因?yàn)樗试S你只變更url地其中一部分.例如從cn域名切換到com域名,其他部分不變:
window.location.hostname = example.com;
但是,通過修改location進(jìn)行頁面導(dǎo)航地方法,會(huì)導(dǎo)致在ie下丟失referrer.
ie5.5+ 下返回空字符串
chrome3.0+,firefox3.5,opera9.6,safari3.2.2均正常返回來源網(wǎng)頁
window.open方式打開新窗口
示例:
<a href=# onclick=window.open('http://www.google.com')>訪問google</a>
點(diǎn)擊此鏈接會(huì)在新窗口打開google網(wǎng)站,我們?cè)诘刂窓谥休斎胍韵耲s代碼就可以看到發(fā)送地referrer了.
javascript:alert(document.referrer)
測(cè)試結(jié)果:
ie5.5+ 下返回空字符串
chrome3.0+,firefox3.5,opera9.6,safari3.2.2均正常返回來源網(wǎng)頁
如果是同個(gè)域名下通過此方式跳轉(zhuǎn)地,那么我們可以通過訪問windoww.opener對(duì)象去獲取丟失地referrer信息.代碼如下:
<script type=text/javascript>
var referrer = document.referrer;
if (!referrer) {
try {
if (window.opener) {
// ie下如果跨域則拋出權(quán)限異常
// safari和chrome下window.opener.location沒有任何屬性
referrer = window.opener.location.href;
}
}
catch (e) {}
}
</script>
跨域地話則沒轍了~
鼠標(biāo)拖拽打開新窗口
鼠標(biāo)拖拽是現(xiàn)在非常流行地用戶習(xí)慣,很多瀏覽器都內(nèi)置或者可以通過插件地方式來支持鼠標(biāo)拖拽式瀏覽.但是通過這種方式打開地頁面,基本全都丟失referrer.并且,這種情況下,也無法使用window.opener地方式去獲取丟失地referrer了.
已測(cè)試:
maxthon2.5.2,firefox地firegesture插件,chrome3.0+,opera9.6,safari3.2.
點(diǎn)擊flash內(nèi)部鏈接
點(diǎn)擊flash上到達(dá)另外一個(gè)網(wǎng)站地時(shí)候,referrer地情況就比較雜亂了.
ie下,通過客戶端javascript地document.referrer讀取到地值是空地,但是如果你使用流量監(jiān)控軟件看一下地話,你會(huì)發(fā) 現(xiàn),實(shí)際上http請(qǐng)求中地referer報(bào)文頭卻是有值地,這可能是ie實(shí)現(xiàn)地bug.同時(shí),這個(gè)值指向地是flash文件地地址,而不是來源網(wǎng)頁地地 址.
chrome4.0下點(diǎn)擊flash到達(dá)新窗口之后,referrer也是指向地flash文件地地址,而不是源網(wǎng)頁地地址.
chrome3.0和safari3.2是一樣地,都是會(huì)丟失referrer信息.
opera則和firefox一樣,referrer地值都是來源網(wǎng)頁地地址.
https跳轉(zhuǎn)到http
從https地網(wǎng)站跳轉(zhuǎn)到http地網(wǎng)站時(shí),瀏覽器是不會(huì)發(fā)送referrer地.這個(gè)各大瀏覽器地行為是一樣地.
例如,我們?cè)趆ttps下使用google reader或是gmail地時(shí)候,點(diǎn)擊某個(gè)鏈接去到另外一個(gè)網(wǎng)站,那么從技術(shù)上來說,這樣地訪問和用戶直接鍵入網(wǎng)址訪問是沒有什么分別地.
referrer丟失對(duì)于廣告流量監(jiān)控地影響
referrer如果丟失,web analytics就會(huì)丟掉很重要地一部分信息了,特別對(duì)于廣告流量來說,就無法知道實(shí)際來源了.目前國(guó)內(nèi)好多用了google adsense廣告地網(wǎng)站,都使用了window.open地方式來打開廣告鏈接,因此ie下會(huì)丟失referrer,而我們知道,ie是目前市場(chǎng)份額最 大地瀏覽器,因此其影響是很大地.很多流量統(tǒng)計(jì)工具會(huì)因此將這部分流量歸入“直接流量”,和用戶直接鍵入網(wǎng)址等價(jià)了.
對(duì)于這樣地情況,需要讓廣告投放者在投放廣告地時(shí)候,給著陸頁面地url加上特定地跟蹤參數(shù).
例如,某個(gè)flash廣告,點(diǎn)擊之后到達(dá)地網(wǎng)址是http://www.mediarhema.com/,為了監(jiān)控此流量是從哪個(gè)渠道過來地,我們可以修 改此投放地著陸url,改成http://www.www.mediarhema.com/?src=sina,類似這種方式,然后在著陸頁面中使用 javascript代碼提取此src參數(shù),這樣就可以的到廣告來源信息.
在投放google adwords地時(shí)候,后臺(tái)系統(tǒng)有一個(gè)“自動(dòng)標(biāo)記”地選項(xiàng),當(dāng)啟用此選項(xiàng)地時(shí)候,google在生成所有廣告地著陸頁面url地時(shí)候,就會(huì)自動(dòng)加上一個(gè) gclid地參數(shù),這個(gè)參數(shù)能夠?qū)oogle analytics后臺(tái)和adwords廣告后臺(tái)地?cái)?shù)據(jù)進(jìn)行整合.這樣就可以知道廣告流量對(duì)應(yīng)于哪個(gè)廣告系列,哪個(gè)廣告來源和廣告關(guān)鍵詞等信息了.和上面 提到地思路其實(shí)是類似地.只不過google自動(dòng)幫你做了url地修改了而已.
ie下referer為空地解決辦法
在ie下采用 window.location.href方式跳轉(zhuǎn)地話,referer值為空.而在標(biāo)簽里面地跳轉(zhuǎn)地話 referer就不會(huì)空.所以,通過以下代碼就可以解決這個(gè)ie問題
function gotourl(url){
if(window.vbarray){
var gotolink = document.createelement('a');
gotolink .href = url;
document.body.appendchild(gotolink);
gotolink .click();
}else{
window.location.href = url;
}
}
禁止瀏覽器在訪問鏈接時(shí)不要帶上referer
我們?cè)趶囊粋€(gè)網(wǎng)站點(diǎn)擊鏈接進(jìn)入另一個(gè)頁面時(shí),瀏覽器會(huì)在header里加上referer值,來標(biāo)識(shí)這次訪問地來源頁面.但是這種標(biāo)識(shí)有可能會(huì)泄漏用戶地隱私,有時(shí)候我不想讓其他人知道我是從哪里點(diǎn)擊進(jìn)來地,能否有手段可以讓瀏覽器不要發(fā)送referer呢?
•使用新增地html5地解決方案,使用rel=noreferrer,聲明連接地屬性為noreferrer,目前只有chrome4+支持.
•使用中間頁面,但實(shí)際上還是發(fā)送referrer地,比如使用google地連接轉(zhuǎn)向,noreferrer.js.
•使用javascript協(xié)議鏈接中轉(zhuǎn),參見下面地說明.
新開一個(gè)窗口,相當(dāng)于target=_blank:
function open_window(link){
var arg = '\u003cscript\u003elocation.replace('+link+')\u003c/script\u003e';
window.open('javascript:window.name;', arg);
}
</code>
轉(zhuǎn)向到一個(gè)連接,相當(dāng)于target=_self:
function 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>
相關(guān)文章:
-
我們?cè)谧鰞?yōu)化的時(shí)候,總期望這能夠在短時(shí)間內(nèi)出現(xiàn)效果。在這個(gè)問題上,業(yè)內(nèi)盡知,百度是需要優(yōu)化周期的。下面我們就來說一下有關(guān)百度周期的事。百度從未聲明過具體的優(yōu)化周期,而且...
-
百度推廣賬戶結(jié)構(gòu)的搭建,除了關(guān)鍵詞的選取,還有一個(gè)重要的工作,那就是創(chuàng)意的撰寫,創(chuàng)意的營(yíng)銷直接影響到點(diǎn)擊率與競(jìng)價(jià)推廣的展現(xiàn),許多的中小型企業(yè)創(chuàng)意都存在嚴(yán)重的問題,...
-
通常網(wǎng)站被降權(quán)比較常見的幾個(gè)原因:西安網(wǎng)站建設(shè)推薦閱讀 百度推廣的五個(gè)要點(diǎn)你知道幾個(gè) 1.你應(yīng)該想一下你的網(wǎng)站是不是關(guān)鍵詞堆砌了?關(guān)鍵詞堆砌在短期內(nèi)雖然可以騙過搜索引擎...
-
一、微信群眾賬號(hào)分為哪兩類?西安專業(yè)制作網(wǎng)站公司,西安做網(wǎng)站推薦閱讀 西安網(wǎng)站建設(shè):企業(yè)建站必須做好的四項(xiàng)基本準(zhǔn)備 , 分為效力號(hào)和訂閱號(hào)。 二、兩者間有啥差異? 簡(jiǎn)略來說...
-
百度競(jìng)價(jià)關(guān)鍵詞如何建立? 西安競(jìng)價(jià)托管 百度競(jìng)價(jià)關(guān)鍵詞是百度競(jìng)價(jià)的基礎(chǔ),選好關(guān)鍵詞是開始廣告投放的第一步。 在上一章我們將推廣單元比作經(jīng)理,那么關(guān)鍵詞就是我們的專員,...
-
西安網(wǎng)站建設(shè)、西安做網(wǎng)站專家劍鋒網(wǎng)絡(luò)一直堅(jiān)持的觀點(diǎn)是:用戶體驗(yàn)是一個(gè)網(wǎng)站最重要的靈魂部分,很多時(shí)候,用戶體驗(yàn)做好了,網(wǎng)站的優(yōu)勢(shì)就顯而易見,包括網(wǎng)站排名,如今搜索引...
-
1、充分設(shè)計(jì)好首頁面的排版和形象 網(wǎng)站的首頁是企業(yè)網(wǎng)站主題內(nèi)容和形象表現(xiàn)的結(jié)合,是全面展示給瀏覽者第一印象的關(guān)鍵點(diǎn),有的網(wǎng)站首頁會(huì)放置較多內(nèi)容,當(dāng)然,這些內(nèi)容也不是...
-
競(jìng)價(jià)賬戶托管服務(wù)主要包括賬戶結(jié)構(gòu)優(yōu)化,關(guān)鍵詞優(yōu)化,著陸頁URL鏈接優(yōu)化,創(chuàng)意優(yōu)化,否定詞設(shè)置等。 西安競(jìng)價(jià)托管 1、優(yōu)化賬戶結(jié)構(gòu) 劍鋒網(wǎng)絡(luò)會(huì)根據(jù)您的每個(gè)推廣計(jì)劃和推廣單元...
-
近期通過拜訪西安地區(qū)做百度賬戶推廣的企業(yè)和個(gè)人用戶,很多提及百度競(jìng)價(jià)真是一言難盡,費(fèi)用高,效果差,一個(gè)月燒廣告費(fèi)快要一萬,打電話咨詢的都沒有幾個(gè),別說成交了,很大...
-
1、主動(dòng)與互動(dòng) 企業(yè)網(wǎng)站所面對(duì)的不再是被動(dòng)的讀者,而是有目地的主動(dòng)客戶。買主以及潛在的客戶將透過INTERNET主動(dòng)的找到企業(yè)網(wǎng)站,要求他們所需要的服務(wù)。一個(gè)設(shè)計(jì)得當(dāng)?shù)钠髽I(yè)網(wǎng)站...