我想设置我的网页的 Referer 标题。目前它显示“xyz”,我想将其设置为“abc”。
查看引用使用 javascript:alert(document.referer)
我想设置我的网页的 Referer 标题。目前它显示“xyz”,我想将其设置为“abc”。
查看引用使用 javascript:alert(document.referer)
您可以在文档对象上使用 Object.defineProperty 来获取引用属性:
Object.defineProperty(document, "referrer", {get : function(){ return "my new referrer"; }});
不幸的是,这不适用于任何版本的 safari <=5、Firefox < 4、Chrome < 5 和 Internet Explorer < 9,因为它不允许在 dom 对象上使用 defineProperty。
您不能Referer
手动设置标题,但您可以使用location.href
将referer
标题设置为使用的链接,href
但这会导致页面重新加载。
这适用于 Chrome、Firefox,不适用于 Safari :(,尚未在其他浏览器中测试
delete window.document.referrer;
window.document.__defineGetter__('referrer', function () {
return "yoururl.com";
});
在这里看到https://gist.github.com/papoms/3481673
问候
测试用例:https : //jsfiddle.net/bez3w4ko/(因此您可以轻松测试多个浏览器)这里是使用 iframe 进行的测试https://jsfiddle.net/2vbfpjp1/1/
我认为理解为什么你不能改变referer
标题可能会帮助人们阅读这个问题。
从这个页面:https : //developer.mozilla.org/en-US/docs/Glossary/Forbidden_header_name
从该链接:
禁止的标头名称是任何无法以编程方式修改的 HTTP 标头的名称...
禁止修改此类标头,因为用户代理保留对它们的完全控制权。
Forbidden header names ... 是以下名称之一:
...
推荐人
...
上面的解决方案对我不起作用,我尝试了以下方法,它在所有浏览器中都有效。
只是做了一个假的ajax调用,它会进入referer头。
var request;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
try {
request = new ActiveXObject('Msxml2.XMLHTTP');
} catch (e) {
try {
request = new ActiveXObject('Microsoft.XMLHTTP');
} catch (e) {}
}
}
request.open("GET", url, true);
request.send();