如何在Javascript中手动设置REFERER标头?

Abh*_*arg 45 javascript

我想设置我的网页的Referer标题.目前它显示"xyz",我想将其设置为"abc".

查看引用使用 javascript:alert(document.referer)

小智 36

您可以在文档对象上使用Object.defineProperty作为referrer属性:

Object.defineProperty(document, "referrer", {get : function(){ return "my new referrer"; }});
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不适用于任何版本的safari <= 5,Firefox <4,Chrome <5和Internet Explorer <9,因为它不允许在dom对象上使用defineProperty.

  • 它设置对象属性,但未在请求标头中设置 (3认同)

小智 26

您不能Referer手动设置标题,但您可以使用location.hrefreferer标题设置为所使用的链接href但它将导致重新加载页面.

  • @ABG您是否有机会更多地了解您的答案如何在代码中实现?例如一个简短的javascript剪辑或HTML片段? (4认同)
  • @jsmcfrind有点晚了,但如果你只是做`window.location.reload()`这会导致页面重新加载,如果你检查`document.referrer`它应该等于当前页面而不是它可能有什么以前.尝试在jsfiddle中创建一个测试用例但由于网站的沙箱性质而失败.[(虽然我确实在这个过程中创建了一个有点有趣的递归jsfiddle.)](http://jsfiddle.net/gjvLoarf/2/) (2认同)

cas*_*tin 17

这适用于Chrome,Firefox,在Safari中不起作用:(,尚未在其他浏览器中测试过

        delete window.document.referrer;
        window.document.__defineGetter__('referrer', function () {
            return "yoururl.com";
        });
Run Code Online (Sandbox Code Playgroud)

看到这里https://gist.github.com/papoms/3481673

问候

测试用例:https://jsfiddle.net/bez3w4ko/(这样你就可以轻松测试几个浏览器了)这里是iframe的测试https://jsfiddle.net/2vbfpjp1/1/

  • 刚试过这个,但它没有用 (2认同)
  • @Brandito无效,值已更改,但是当您发送诸如图像的请求时,您可以发现引荐来源仍然是旧的。 (2认同)

Guy*_*Guy 5

我认为理解为什么你不能改变referer标题可能会帮助人们阅读这个问题。

从这个页面:https : //developer.mozilla.org/en-US/docs/Glossary/Forbidden_​​header_name

从该链接:

禁止的标头名称是任何无法以编程方式修改的 HTTP 标头的名称...

禁止修改此类标头,因为用户代理保留对它们的完全控制。

Forbidden header names ... 是以下名称之一:

...

推荐人

...