>我使用以下方法成功发送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