IE浏览器下HTTP_REFERER失效
后端语言:PHP。
由于功能需求,后端需要判断链接的http_referer值,PHP保存在 $_SERVER['HTTP_REFERER']中。但经过测试,IE浏览器(包括IE7-IE11)下该值为空,谷歌、火狐等均能正常获取。页面链接是通过window.open(url)
的方式打开的。
后得知,IE浏览器只有通过a链接或者form表单提交的方式才能获取到HTTP_REFERER,所以有了下面的解决方案,大致就是先判断浏览器是否是IE浏览器,如果是,就模拟a链接点击跳转到指定页面,如果不是,就使用正常方式跳转。
代码如下:
// document.all 方法ie11不支持,所以不能简单通过 (document.all) ? true : false 来判断
function isIE() { //ie?
if (!!window.ActiveXObject || "ActiveXObject" in window)
return true;
else
return false;
}
function referURL(url){
var isIe=isIE();
if(isIe) {
var linka = document.createElement('a');
linka.href=url;
linka.target="_blank";
document.body.appendChild(linka);
linka.click();
} else {
window.open(url);
}
}