Set referer for XMLHttpRequest?



>我使用以下方法成功发送XMLHttpRequest

var createCORSRequest = function(method, url) {
  var xhr = new XMLHttpRequest();
  if ("withCredentials" in xhr) {
    // Most browsers.
    xhr.open(method, url, true);
  } else if (typeof XDomainRequest != "undefined") {
    // IE8 & IE9
    xhr = new XDomainRequest();
    xhr.open(method, url);
  } else {
    // CORS not supported.
    xhr = null;
  }
  return xhr;
};
var url = 'http://www.whatismyip.com';
var method = 'GET';
var xhr = createCORSRequest(method, url);
xhr.onload = function() {
  // Success code goes here.
};
xhr.onerror = function() {
  // Error code goes here.
};

xhr.setRequestHeader('referer', 'http://www.google.com');
xhr.send();

但是,我无法定义我的referer。添加自定义referer的正确方法是什么?

你不能。XMLHttpRequest 规范禁止更改 referer 标头(这会阻止位于其中的站点绕过某些站点使用 referer 进行的安全检查)。

如果标头与以下标头之一的匹配项不区分大小写,请终止这些步骤:

  • 推荐人

你可以尝试这样的事情:

xhr.setRequestHeader('X-Referer', window.location.href);

然后阅读这个自定义的X-Referer标题。

在 https://www.trustedsec.com/blog/setting-the-referer-header-using-javascript/上找到答案

您可以使用window.history.replaceState(null, '', 'https://yourwebsite.com/forged/referer')进行设置

据我所知,它仅适用于同一域,但您可以通过这种方式打造路径。

请参阅 https://developer.mozilla.org/en-US/docs/Web/API/History/replaceState

最新更新