1. What's Referer
모두 아시다시피 레퍼러(표준은 Referrer, 하지만 Referer라고 많이 씀)는 현재 웹페이지에 도착하기 위해서,
어느 페이지를 거쳐왔느냐 하는 정보를 뜻합니다.
이 정보는 이전 페이지에서 다음 페이지를 호출할 때 HTTP Header에 실어서 보내는 정보입니다.
예를 들어 네이버에서 "휴즈플로우"를 검색한 다음,
링크를 클릭하게 되면, 휴즈플로우 웹사이트로 이동하게 되는데, 이 때 호출되는 Request Header를 살펴보면,
아래와 같이 Referer 정보가 있습니다. (Fiddler를 통해서 볼 수 있습니다.)
이 정보를 이용해서 구글 애널러틱스나 블로그 관리자 모듈에서 유입경로 데이터가 만들어지게 되는 것이죠.
이게 바로 Referer입니다.
2. 실버라이트에서 Referer 얻기
실버라이트에서 Referer는 다음과 같이 간단한 방법으로 참조할 수 있습니다.
string referer = HtmlPage.Document.GetProperty("referrer").ToString();
아래 실버라이트 어플리케이션에서는 위의 코드를 이용하여 여러분이 이 페이지에 접근한 경로를 표시하고 있습니다.
(직접 URL을 브라우져 주소창에 입력하여 접근한 경우에는 아무 것도 표시 되지 않을 것입니다.)
이것을 잘 활용하면, 원하는 경우 특정 도메인 이외의 곳에서 (iframe 등의 방법으로) 자신의 실버라이트 어플리케이션이 실행되는 것을 차단할 수도 있습니다.
3. 실버라이트에서 Referer 정보 실어보내기
실버라이트에서 특정 웹페이지를 호출하면, 그 웹페이지에서는 Referer를 얻을 수 있을까요?
실버라이트 1.1 때 이미 이 문제를 시험해 보았습니다만, 실버라이트는 흔적(Referer)을 남기지 않았습니다.
실버라이트 2에서도 마찬가지입니다.
아래 버튼을 눌러 봄으로써 테스트 해보실 수 있습니다.
새로 뜬 창의 2.실버라이트에서 Refere 얻기에서 등장한 Referer 표시기에는 Referer가 표시되어 있기를 기대 합니다만,
아무 것도 없을 것입니다.
하지만 HTML Anchor 태그를 사용한 이 링크를 클릭하면 Referer가 표시되는 것을 확인하실 수 있으실 겁니다.
WebClient나 HttpWebRequest를 이용하여 웹페이지를 호출하는 경우에도 마찬가지로 흔적을 남기지 않습니다.
WebClient나 HttpWebRequest의 전송 Header에 아래와 같이 Referer를 실어 보내려고 시도해봤지만,
WebClient wc = new WebClient();
wc.Headers[HttpRequestHeader.Referer] = HtmlPage.Document.DocumentUri.ToString();
wc.Headers[HttpRequestHeader.Referer] = HtmlPage.Document.DocumentUri.ToString();
아래와 같은 예외를 발생시키네요.
꼭 Referer를 보내야 한다면 이제 방법은 하나 밖에 없습니다.
솔직하게, 적극적으로 정보를 실어 보내는 것이지요.
예를 들면 아래 코드처럼 말이죠.
(물론 보안 상 좋지 않을 수도 있어요.)
public void SendFeedback()
{
string feedbackUrl = string.Format("http://도메인/피드백수집페이지URL?referer={0}", HtmlPage.Document.DocumentUri.ToString());
{
string feedbackUrl = string.Format("http://도메인/피드백수집페이지URL?referer={0}", HtmlPage.Document.DocumentUri.ToString());
WebClient wc = new WebClient();
wc.DownloadStringAsync(new Uri(feedbackUrl));
}
감사합니다.
'Silverlight > Lecture' 카테고리의 다른 글
'실버라이트와 ASP.NET 2.0 인증(Membership, Profile & Role) 연동하기' 참고자료 (2) | 2008.12.31 |
---|---|
실버라이트 어플리케이션 빌드버전 표시하기 (0) | 2008.11.26 |
실버라이트 Full Screen 모드에서 허용되는 키 목록 (SL2기준) (0) | 2008.11.25 |
실버라이트 호스팅페이지 URL에서 QueryString 얻기 (2) | 2008.09.24 |
Silverlight에서 XML을 읽는 두 가지 간단한 방법 (0) | 2008.09.10 |
(Firefox에서) 실버라이트 런타임 또 깔으라고 나오는 경우 중 하나! (6) | 2008.08.14 |
Namespace와 LINQ to XML (2) | 2008.07.24 |