gpt4 book ai didi

JavaScript window.location 没有在请求头中设置 referer

转载 作者:技术小花猫 更新时间:2023-10-29 11:45:19 25 4
gpt4 key购买 nike

我理解在请求 header 中依赖 Referer 是不对的。但我的问题是,为什么我使用window.location IE 没有将Referer 设置为Request Header?有什么想法或解决办法吗?

这不会在请求 header 中设置 Referer:

function load1() {
window.location = "https://" + serverURL + "/path/folder/page.aspx";
}

<a href="javascript:load1()">Link 1</a>

同时设置:

<a href="https://hardcode.server.url/path/folder/page.aspx">Link 1</a>

最佳答案

您的帖子标题表明您想使用 JavaScript 以编程方式更改当前页面,但仍提供 HTTP 引荐来源网址(据我了解,使用 <a> 标记仅用于测试用例)。

您需要注意跨浏览器问题:

  • 更改 window.location.href 时设置 HTTP 引荐来源 header (HTTP-Referer)在以下浏览器下:
    • MSIE 9(但可能是 9 以上的任何版本)
    • Firefox(至少 3.0、3.5、4.0、5.0,但很可能是所有版本)
    • Chrome(至少 9,但很可能是所有版本)
    • Safari(至少 5 个,但很可能是所有版本)
    • Opera(至少 11 个,但很可能是所有版本)
  • MSIE(至少 6、7、8):更改 window.location.href设置引荐来源网址(这就是为什么一些伪解决方案是基于 myLink.click() 的原因)
  • Firefox(至少 3.0、3.5、4.0):click函数不存在(这就是为什么基于 myLink.click() 的伪解决方案不起作用的原因)
  • Firefox 5:click功能在 Firefox 5 下存在但不存在更改窗口位置,因此所有方法都依赖于myLink.click() 的存在方法将不起作用。打电话myLink.onclick()myLink.onClick()引发错误(“onclick 不是函数”),所以 solutions based on these calls不会工作。

为了解决这些跨浏览器问题,我使用了以下方法:

function navigateToUrl(url) {
var f = document.createElement("FORM");
f.action = url;

var indexQM = url.indexOf("?");
if (indexQM>=0) {
// the URL has parameters => convert them to hidden form inputs
var params = url.substring(indexQM+1).split("&");
for (var i=0; i<params.length; i++) {
var keyValuePair = params[i].split("=");
var input = document.createElement("INPUT");
input.type="hidden";
input.name = keyValuePair[0];
input.value = keyValuePair[1];
f.appendChild(input);
}
}

document.body.appendChild(f);
f.submit();
}

navigateToUrl("http://foo.com/bar");

此解决方案适用于上面列出的所有浏览器风格和版本。它的优点是简单、多浏览器和易于理解。请注意,这尚未在 HTTPS 下进行测试。

关于JavaScript window.location 没有在请求头中设置 referer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4762254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com