对于Internet Explorer 7,8,9浏览器,C#的Request.UrlReferrer返回null。它的原因是什么?它的解决方案是什么?
页面上有一些“点击此处”按钮。单击该按钮,将在新选项卡中打开一个新的URL页面。在打开页面时,我使用Request.UrlReferrer将Page的url存储在数据库中。
对于其他浏览器,如Firefox,Chrome等,它运行正常。但它从未在Internet Explorer上运行过。
请帮帮我。
在各种情况下,引荐者可以是空的。例如,某些隐私设置(按策略进行扩展)或插件可以阻止发送引荐来源。它以任何方式用户输入,你不能相信的东西。
如果你解释你想要做什么以及你用什么代码这样做,也许可以给出一个真正的答案。
在IE8或更低版本中使用document.location.href
或window.open
打开一个新窗口时,Request.UrlReferrer
是null
,而在IE9 +,Firefox或Chrome中并非如此。
解决方案是,你曾经使用过的地方
document.location.href = "/Roles/Index";
只需将以下函数复制并粘贴到js文件中并调用该函数即可。
RedirectURL("/Roles/Index");
function RedirectURL(url) {
var a = document.createElement("a");
if (a.click) {
// HTML5 browsers and IE support click() on , early FF does not.
a.setAttribute("href", url);
a.style.display = "none";
document.body.appendChild(a);
a.click();
} else {
// Early FF can, however, use this usual method
// where IE cannot with secure links.
window.location.href = url;
}
}
希望上述解决方案能够解决问题。
如果您使用window.open(targetUrl,“_ blank”)函数在新的浏览器选项卡中打开页面,则UrlReferrer对于IE为空 - 实际上对我来说这个问题即使对于IE 11也是可重现的,但不仅适用于旧版本的IE。以下JavaScript代码允许我解决此问题:
var link = document.createElement("a");
link.href = targetUrl;
link.target = "_about";
document.body.appendChild(link);
link.click();
我知道这个问题已经过时了。但也许我的回答会帮助别人。