Я хочу установить заголовок Referer моей веб-страницы. В настоящее время он отображает "xyz", и я хочу установить его на "abc".
Просмотренный референт с помощью javascript:alert(document.referer)
Я хочу установить заголовок Referer моей веб-страницы. В настоящее время он отображает "xyz", и я хочу установить его на "abc".
Просмотренный референт с помощью javascript:alert(document.referer)
Вы не можете вручную установить заголовок Referer
, но вы можете использовать location.href
, чтобы установить заголовок Referer
на ссылку, используемую в href
, но это вызовет перезагрузку страницы.
Вы можете использовать Object.defineProperty для объекта документа для свойства referrer:
Object.defineProperty(document, "referrer", {get : function(){ return "my new referrer"; }});
К сожалению, это не сработает ни на одной версии Safari <= 5, Firefox < 4, Chrome < 5 и Internet Explorer < 9, поскольку он не позволяет defineProperty использоваться на dom-объектах.
Это работает в 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/ (так что вы можете легко протестировать несколько браузеров), и вот тест с iframes https://jsfiddle.net/2vbfpjp1/1/
Выше решение не работает для меня, я пробовал следовать и работает во всех браузерах.
просто сделал фальшивый вызов ajax, он сделает запись в заголовке реферирования.
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();
Вы не можете изменить свойство REFERRER. То, что вы запрашиваете, - это подменить запрос.
На всякий случай, если вы хотите, чтобы реферер был настроен так, как будто вы открыли URL-адрес напрямую или в первый раз {http referrer = null}, перезагрузите страницу
location.reload();
Вы можете изменить значение реферера в заголовке HTTP с помощью API веб-запросов.
Для этого требуется фон js script. Вы можете использовать onBeforeSendHeaders, поскольку он изменяет заголовок перед отправкой запроса.
Ваш код будет примерно таким:
chrome.webRequest.onBeforeSendHeaders.addEventListener(function(details){
var newRef = "http://new-referer/path";
var hasRef = false;
for(var n in details.requestHeaders){
hasRef = details.requestHeaders[n].name == "Referer";
if(hasRef){
details.requestHeaders[n].value = newRef;
break;
}
}
if(!hasRef){
details.requestHeaders.push({name:"Referer",value:newRef});
}
return {requestHeaders:details.requestHeaders};
},
{
urls:["http://target/*"]
},
[
"requestHeaders",
"blocking"
]);
URL: он действует как фильтр запроса и вызывает слушателя только для определенных запросов.
Для получения дополнительной информации: https://developer.chrome.com/extensions/webRequest
Если вы хотите изменить заголовок реферала (url), который будет отправлен на сервер при нажатии пользователем якоря или iframe, вы можете сделать это без каких-либо взломов. Просто запустите history.replaceState, вы измените URL-адрес, как он появится в панели браузера, а также референт, который будет отправлен на сервер.