HTTP는 우리가 웹브라우저로 웹사이트의 페이지를 받을 수 있도록 해주는 프로토콜이다.
이 프로토콜에는 REFERER라는 헤더값이 있는데 브라우저가 서버로 이 헤더값을 설정해서
보낸다. 이 레퍼러의 가치는 로그 분석이나 접근 제어를 할 때 이용한다.
그렇다면 레퍼러의 값은 어떤 내용일까?
naver.com에서 blog.naver.com으로 이동하는 클릭을 했을 때 웹브라우저는
서버에 http://www.naver.com/을 값으로 하는 레퍼러를 보낸다.
결국 레퍼러의 값은 이 페이지를 요청한 이전 페이지가 무엇인지를 알려준다.
레퍼러는 로그분석을 위해서 유저의 자취를 분석하는데 요긴한 정보이다.
로그분석을 할 때, 우리 사이트로의 유입이 어떤 검색서비스를 이용한 것인지 알고자할 때
바로 이 레퍼러를 분석한다. 이것이 일반적인 로그분석기이다.
접근제어는 어떻게 이용할까? 게시물을 저장할 때에는 그 전에 게시물을 쓰는 페이지에서
저장을 요청한다. 때문에 저장 페이지에서 레퍼러값을 체크해서 쓰기 페이지가 레퍼러값이
아니면 요청을 거부할 수 있다. 물론 레퍼러 제어는 아주 단순한 방법이기 때문에 완벽한
접근제어는 아니지만 임시적으로 제어를 할 경우에는 간단하기 때문에 꽤 유용하다.
IE는 일반적으로 A 태그의 클릭에 대해서 Referer를 덧붙여준다.
A 태그 외에도 img 태그의 이미지 호출시나 script 태그, style 태그의 요청에 대해서도
레퍼러가 남는다. 뿐만 아니라 iframe의 요청에 대해서도 레퍼러가 남는다. 이 때에는
해당 document의 주소가 곧 레퍼러값으로 지정된다.
요즘 각광을 받고 있는 AJAX의 경우에도 레퍼러가 남는다.
당연히 form 태그를 통한 요청도 레퍼러가 남는다.
하지만, window.open과 같은 자바스크립트 호출에 대해서는 Referer를 남기지 않는다.
location.replace나 location.href등도 레퍼러가 남지 않는다. 예외인 셈이다.
이에 대해 조사한 결과 I.E에서는 레퍼러가 남지 않지만 파이어폭스2.0 및 오페라 9.0 에서는 레퍼러가 남는다고 한다.
관련정보
INFO: Internet Explorer Does Not Send Referer Header in Unsecured Situations
(http://support.microsoft.com/kb/178066)
When linking from one document to another in Internet Explorer 4.0
and later, the HTTP Referer header will not be sent when the referer is a
non-HTTP (or non-HTTPS) page. The Referer header will also not be sent
when linking from an HTTPS page to a non-HTTPS page.
The Referer header is a standard HTTP header in the form of "Referer:
<URL>," which indicates to a Web server the URL of the page that
contained the hyperlink to the currently requested URL. When a user
clicks on a link on "http://example.microsoft.com/default.htm" to
"http://example.microsoft.com/test.htm," the theoretical
example.microsoft.com Web server will be sent a referer header of the
form http://example.microsoft.com.
However, Internet Explorer will not send the Referer header in
situations that may result in secure data being sent accidentally to
unsecured sites. For example, Internet Explorer will not send the
Referer header for each of the following example hyperlinks from one
document URL to another document URL
javascript:somejavascriptcode --> http://example.microsoft.com
file://c:\alocalhtmlfile.htm --> http://example.microsoft.com
https://example.microsoft.com --> http://www.microsoft.com
This prevents local file names from being sent inadvertently to Web
servers when linking from local content to Web sites that might snoop on
such information. Also, many secure (HTTPS) Web servers store secure
information such as credit-card data in the URL during a GET request to a
CGI or ISAPI server application. This information can be unwittingly
sent in the Referer header when linking out of an "https://" server to
an "http://" server elsewhere on the Web. Internet Explorer attempts to
prevent this bad practice by not sending the Referer header when
transitioning from an HTTPS URL to a non-HTTPS URL.
출처 - http://passionth.tistory.com/884?srchid=BR1http%3A%2F%2Fpassionth.tistory.com%2F884