需求是這樣的,使用者訪問a.com時將其重新導向到b.com,同時不能讓b.com通過referer檢測到使用者是從a.com過來的。
請問大神這樣的功能能否實現?
回複內容:
需求是這樣的,使用者訪問a.com時將其重新導向到b.com,同時不能讓b.com通過referer檢測到使用者是從a.com過來的。
請問大神這樣的功能能否實現?
思路就不對。
不管你是PHP的重新導向,Nginx的重新導向,甚至前端JS的重新導向。
都無所謂。。。。。。
最後都是瀏覽器執行重新導向的操作的。
Referer或者Origin之類的參數,是瀏覽器加上去的。
要看具體瀏覽器的具體情景,不同的瀏覽器表現完全不一樣(或者說,基本無法預測和控制)。
Update:
有看到一些其他的思路,不過都有局限,也沒什麼保證,可以參考
http://segmentfault.com/q/1010000000123441
試試把a.com做成https
重新導向的地址歸根還是瀏覽器去執行了,樓主可以做個中轉,a.com
重新導向到c.com
,再重新導向b.com
referer是瀏覽器發出的,不是nginx和php所能決定的
後台方案:通過proxy,對b.com做一個透明代理。
前台方案:通過js,或者連結
如果你是在某個網站比如A.com,有個連結點擊之後進入b.com,然後要消除refer,把連結改成下面這樣子:
xxxfunction noreferclick(o){ var b,e,c,g,d,f,h;b=$(o);c=b.attr("href"); e=""; if($.browser.webkit){ b.attr("rel","noreferrer"); return true; } var userAgent = navigator.userAgent.toLowerCase(); if(userAgent.indexOf("firefox")!=-1){ if(b.attr("added")){ return true; } else{ h="data:text/html;charset=utf-8,"+encodeURIComponent(e); b.attr("added",1); b.attr("href",h); return true; } } else{ var a=b.attr("target")||"_self"; switch(a){ case "_self": case window.name: a=window; break; default: a=window.open(null,a); break; } a=a.document; a.clear(); a.write(e); a.close(); return false; }}
大部分瀏覽器適用。
如果不是,比如c.com點選連結到a.com,然後轉b.com,只有a.com是可控的。參考上面的點擊操作做個js跳轉。