如何保护document.referrer免受第三方脚本更改的影响?

时间:2019-09-11 18:19:12

标签: javascript referrer

我在我的网站上使用了第三方脚本(产品推荐使用Chaordic loader.js),它用垃圾覆盖document.referrer,使我头疼。

问题:有没有办法防止这种修改?我可以通过某种方式“冻结/密封” document.referrer吗?

我知道我可以取消与公司的合同,但想先尝试使用此锁定。我可以将javascript代码放在第三部分代码的前面或后面,但是不能修改它。

覆盖document.referrer的第三部分代码:

var t = window.chaordic && window.chaordic.readCookie && window.chaordic.readCookie(e);
Object.defineProperty(window.document, "referrer", {
  configurable: false,
  get: function() { return t }
});

2 个答案:

答案 0 :(得分:0)

如果您控制着将您带到混乱document.referrer的页面的文档,请确保使用rel="noreferrer"属性设置了任何/所有链接,该属性会告诉当前窗口导航到下一个窗口时不要保留自身的引用,从而使document.referrer返回为null。

由于我不确定您是否可以访问呼叫页面或在目标页面上的收尾状况如何,因此我没有将您的问题标记为重复,但是有更多信息here

答案 1 :(得分:0)

答案几乎就在于您的问题

// You need to put the following code before their code runs 
const referrer = document.referrer;
Object.defineProperty(window.document, "referrer", {
  configurable: false,
  get: () => referrer,
});

您也可以这样

Object.defineProperty(window.document, "referrer", {
  configurable: false,
  writable: false,
  value: document.referrer
});

现在除了Javascript,我还会考虑其他选择。更改document.referrer是您正在意识到的一件令人讨厌的事情。他们可能正在做您不知道的其他令人讨厌的事情。