IT_Programming/JavaScript

IE 에서 location.href 를 쓰는 경우 referer 값을 제대로 받아오는 방법

JJun ™ 2011. 4. 3. 12:48

보통 자바스크립트로 다음과 같이 페이지 이동을 하게 된다.
document.location.href="페이지url";

 

그런데 만약 이동하게 되는 페이지에서 referer를 체크하는 로직이 있다면 IE같은 경우

referer가 정상적으로 넘어가지 않을 수 있다. IE의 버그인지 정확히는 잘 모르겠지만 6,7,8 모든버전에서

발생한다. (파폭에서는 발생하지 않음). 이런 경우에는 다음과 같이 dom api로 a태그를 생성해서 request를 보내면 정상적으로 값이 넘어가는 것 같다.

 

var anchor = document.createElement("a");
if (!anchor.click) { //Providing a logic for Non IE
    window.location = url;
    return;
}
anchor.setAttribute("href", url);
anchor.style.display = "none";
document.getElementById("body").appendChild(anchor);
anchor.click();

 

 

더보기

IE will not pass REFERER header when you use window.location

 

Hi guys... recently I've noticed an issue with IE header when we use window.location construct in Javascript. Generally, most common way of opening a website through Javascript is window.location. But if you're doing any logic based on the header REFERER in the target page, that will not work in IE, since IE browser will not pass REFERER header when you use window.location.

I was in the same position and tried to find a solution for that, here is what I've done to enable the REFERER header for IE.

Here is the general way of invoking:

function general(url)
{
window.location=url;
}



Here is the special way:

function special(url)
{
var anchor = document.createElement("a");
if(!anchor.click) { //Providing a logic for Non IE
window.location = url;
return;
}
anchor.setAttribute("href", url);
anchor.style.display = "none";
document.getElementById("body").appendChild(anchor);
anchor.click();
}



Click here to view other Java script programs that I've developed.