추천자의 중요성
HTTP 요청에는 현재 트래픽의 출처를 나타내는 참조 헤더가 있습니다. 예를 들어, www.sina.com.cn/sports/의 링크를 클릭하여 cctv.com의 홈페이지에 도달 한 다음 www.sina.com.cn/sports/입니다. JavaScript에서는 Document.Referrer를 통해 동일한 정보를 얻을 수 있습니다. 이 정보를 통해 방문자가 현재 페이지에 오는 채널을 알 수 있습니다. 이는 웹 분석에 매우 중요합니다. 이는 다른 채널에서 가져 오는 트래픽의 배포와 사용자가 검색 한 키워드 등이 참조 정보를 분석하여 얻을 수 있습니다.
그러나 여러 가지 이유로, 때때로 JavaScript로 읽은 참조자는 빈 문자열입니다. 어떤 상황을 참조 할 것인지 요약하겠습니다.
페이지 탐색의 위치 개체를 수정하십시오
위치 객체는 페이지 탐색을위한 매우 실용적인 객체입니다. 그는 URL의 일부만 변경할 수 있기 때문입니다. 예를 들어 CN 도메인 이름에서 COM 도메인 이름으로 전환하면 다른 부분이 변경되지 않았습니다.
코드 사본은 다음과 같습니다.
Window.location.hostname = "example.com";
그러나 페이지 내비게이션으로 페이지 탐색 방법을 수정하면 IE에 따라 참조자가 손실됩니다.
IE5.5+ 아래에서 빈 문자열을 반환합니다
Chrome 3.0+, Firefox 3.5, Opera9.6, Safari 3.2.2 모든 소스 웹 페이지로 돌아 가기 정상
창으로 새 창을 엽니 다
예:
코드 사본은 다음과 같습니다.
<a href = "#"onclick = "window.open ( 'http://www.google.com')"> Access Google </a>
이 링크를 클릭하면 새 창에서 Google 웹 사이트가 열립니다.
코드 사본은 다음과 같습니다.
JavaScript : Alert (Document.Referrer)
테스트 결과 :
IE5.5+ 아래에서 빈 문자열을 반환합니다
Chrome 3.0+, Firefox 3.5, Opera9.6, Safari 3.2.2 모든 소스 웹 페이지로 돌아 가기 정상
동일한 도메인 이름으로 이러한 방식으로 리디렉션되면 Windoww.opener 객체에 액세스하여 손실 된 참조자 정보를 얻을 수 있습니다. 코드는 다음과 같습니다.
코드 사본은 다음과 같습니다.
<script type = "text/javaScript">
var referrer = document.referrer;
if (! referrer) {
노력하다 {
if (window.opener) {
// IE에 따라 크로스 도메인이면 권한 예외가 발생합니다.
// 사파리와 크롬에는 속성이 없습니다
참조자 = window.opener.location.href;
}
}
캐치 (e) {}
}
</스크립트>
도메인을 건너면 무력해질 것입니다 ~
마우스를 드래그하여 새 창을 엽니 다
마우스 드래그 앤 드롭은 오늘날 많은 브라우저가 내장되어 있거나 플러그인을 통한 마우스 드래그 앤 드롭 브라우징을 지원할 수 있습니다. 그러나 이러한 방식으로 열린 페이지는 기본적으로 모든 참조자가 손실됩니다. 또한이 경우 Window. Opener 메소드를 사용하여 손실 된 참조기를 얻는 것은 불가능합니다.
테스트 :
Maxthon 2.5.2, Firefox, Chrome 3.0+, Opera 9.6, Safari 3.2 용 Firegesture 플러그인.
플래시의 내부 링크를 클릭하십시오
플래시를 클릭하여 다른 웹 사이트에 도달하면 참조 업체의 상황이 더 지저분합니다.
즉, 문서를 통해 읽는 값은 클라이언트 JavaScript의 레퍼러가 비어 있지만, 트래픽 모니터링 소프트웨어를 사용하면 실제로 HTTP 요청의 참조 헤더가 값을 가지고 있음을 알 수 있습니다. 이것은 IE 구현의 버그 일 수 있습니다. 동시에이 값은 소스 웹 페이지의 주소가 아닌 플래시 파일의 주소를 가리 킵니다.
Chrome 4.0에서 플래시를 클릭하여 새 창에 도달 한 후, 참조자는 소스 웹 페이지의 주소가 아닌 플래시 파일의 주소를 가리 킵니다.
Chrome 3.0과 Safari 3.2는 동일하며 둘 다 참조 자 정보를 잃게됩니다.
Firefox와 마찬가지로 Opera의 값은 소스 웹 페이지의 주소입니다.
HTTPS는 HTTP로 점프합니다
HTTPS 웹 사이트에서 HTTP 웹 사이트로 점프 할 때 브라우저는 참조자를 보내지 않습니다. 이 주요 브라우저의 동작은 동일합니다.
예를 들어, HTTPS에서 Google Reader 또는 Gmail을 사용하면 링크를 클릭하여 다른 웹 사이트로 이동하면 이러한 액세스가 직접 URL을 입력하는 사용자 사이에 차이가 없습니다.
트래픽 모니터링 광고에 대한 추천자 손실의 영향
참조자가 손실되면 웹 분석은 정보의 매우 중요한 부분, 특히 광고 트래픽에서 매우 중요한 부분을 잃게됩니다. 실제 소스를 아는 것은 불가능합니다. 현재 Google 애드 센스 광고를 사용하는 중국의 많은 웹 사이트는 광고 링크를 열기 위해 열리므로 IE는 현재 시장 점유율이 가장 큰 브라우저라는 것을 알고 있습니다. . 따라서 많은 트래픽 통계 도구는이 트래픽 의이 부분을 "직접 트래픽"으로 분류하며, 이는 URL을 직접 입력하는 사용자와 동일합니다.
이 경우, 광고가 광고를 제공 할 때 광고가 방문 페이지의 URL에 특정 추적 매개 변수를 추가 할 수 있도록해야합니다.
예를 들어, 플래시 광고를 클릭하면 http://www.example.com/에 도착할 URL 이이 트래픽을 모니터링하기 위해이 장소의 착륙 URL을 수정할 수 있습니다. http : // www.example.com/?src=sina는이 메소드와 유사한 다음 JavaScript 코드를 사용하여 방문 페이지 에서이 SRC 매개 변수를 추출하여 광고의 소스 정보를 얻을 수 있습니다.
Google 애드워즈에 서비스를 제공 할 때 배경 시스템에는 "자동 태그"옵션이 활성화되면 Google이 모든 광고의 방문 페이지 URL을 생성하면 GCLID 매개 변수를 자동으로 추가 할 수 있습니다 및 AdWords 광고 백엔드. 이렇게하면 광고 트래픽이 어떤 캠페인에 해당하는지, 어떤 광고 소스 및 광고 키워드 및 기타 정보에 해당하는지 알 수 있습니다. 실제로 위에서 언급 한 아이디어와 유사합니다. 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;
}
}
링크에 액세스 할 때는 브라우저가 참조자를 가져 오지 않도록 금지합니다
한 웹 사이트에서 링크를 클릭하여 다른 페이지를 입력하면 브라우저가 헤더에 참조 값을 추가 하여이 방문의 소스 페이지를 식별합니다. 그러나 이런 종류의 로고는 때때로 다른 사람들이 내가 클릭 한 곳을 알고 싶지 않을 수 있습니다. 브라우저가 참조기를 보내지 않도록하는 방법이 있습니까?
• 새로 추가 된 HTML5 솔루션을 사용하여 Rel = "Noreferrer"를 사용하여 연결 속성을 Noreferrer로 선언합니다.
• 중간 페이지를 사용하지만 실제로 Google의 Connection Steering, Noreferrer.js 사용과 같은 참조자를 보냅니다.
• JavaScript 프로토콜을 사용하여 링크를 전송하려면 아래 지침을 참조하십시오.
새 창은 대상 = "_ blank"와 동일합니다.
코드 사본은 다음과 같습니다.
함수 Open_Window (링크) {
var arg = '/u003cscript/u003location.replace("'+link+'")/u003c/script/u003e';
window.open ( 'javaScript : window.name;', arg);
}
</코드>
연결로의 전환은 대상 = "_ self"와 동일합니다.
코드 사본은 다음과 같습니다.
함수 리디렉션 (링크) {
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);
}
</코드>