Voglio impostare l'intestazione Referer della mia pagina web. Attualmente visualizza "xyz" e voglio impostarlo su "abc".Come impostare manualmente l'intestazione REFERER in Javascript?
Vista l'referer usando javascript:alert(document.referer)
Voglio impostare l'intestazione Referer della mia pagina web. Attualmente visualizza "xyz" e voglio impostarlo su "abc".Come impostare manualmente l'intestazione REFERER in Javascript?
Vista l'referer usando javascript:alert(document.referer)
Non è possibile impostare manualmente Referer
colpo di testa, ma è possibile utilizzare per impostare il location.href
referer
intestazione per il collegamento utilizzato in href
ma causerà il ricaricamento della pagina.
grazie cambia il referer ma cambia l'URL del server di selenio Quindi ritengo che sia impossibile cambiare il referente –
@ABG Qualche possibilità di scrivere un po 'di più su come la tua risposta si materializza nel codice? Per esempio. un breve javascript snipping o snippet HTML? – condiosluzverde
@jsmcfrind Un po 'tardi, ma se fai solo 'window.location.reload()' questo farà ricaricare la pagina e se controlli 'document.referrer' dovrebbe essere uguale alla pagina corrente invece di qualunque cosa possa sono stato prima Provato a creare un caso di test in jsfiddle ma non è riuscito a causa della natura sandbox del sito web. [(Anche se ho creato un jsfiddle ricorsivo alquanto divertente nel processo.)] (Http://jsfiddle.net/gjvLoarf/2/) – KhalilRavanna
È possibile utilizzare Object.defineProperty sull'oggetto del documento per la proprietà referrer:
Object.defineProperty(document, "referrer", {get : function(){ return "my new referrer"; }});
Purtroppo questo non funziona su qualsiasi versione di Safari < = 5, Firefox < 4, Chrome < 5 e Internet Explorer < 9 poiché non consente l'utilizzo di defineProperty sugli oggetti dom.
funziona perfettamente! –
Funziona anche. Preferisci questo alla risposta di @ casivaagustin anche se i suoi lavori sono anche – Ema4rl
Sei fantastico! Grazie :) –
Questo funziona in Chrome, Firefox, non funziona in Safari :(, non sono testati in altri browser
delete window.document.referrer;
window.document.__defineGetter__('referrer', function() {
return "yoururl.com";
});
visto che qui https://gist.github.com/papoms/3481673
riguarda la causa
di prova: https://jsfiddle.net/bez3w4ko/ (così puoi facilmente testare diversi browser) ed ecco un test con iframes https://jsfiddle.net/2vbfpjp1/1/
ha appena provato questo, e non ha funzionato –
funziona su browser chromium – Ema4rl
ma come su quando un utente tenta di accedere a un nuovo sito ??? per esempio c'è un link su site1.com che reindirizza l'utente su site2.com –
Sopra soluzione non funziona per me, ho provato a seguire e funziona su tutti i browser.
ha fatto semplicemente una chiamata ajax falso, farà una voce nell'intestazione di referer.
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();
come dovrei provare questo? puoi per favore fornirmi dei passaggi perché ho usato molti modi per cambiare l'intestazione del referrar ma niente funziona? –
Non è possibile modificare la proprietà REFERRER. Quello che stai chiedendo è di falsificare la richiesta.
Solo nel caso in cui si desidera che il referrer da impostare come avete aperto direttamente o per la prima volta {referer = null} un URL quindi ricaricare la pagina
location.reload();
questo rimuove solo l'intestazione del referrer. non aggiunge un'intestazione personalizzata –
Giusta. la domanda non riguarda l'aggiunta dell'intestazione personalizzata. – Vaibs
È possibile modificare il valore della referrer nell'intestazione HTTP utilizzando l'API di richiesta Web.
Richiede uno script js in background per il suo utilizzo. È possibile utilizzare onBeforeSendHeaders poiché modifica l'intestazione prima che la richiesta venga inviata.
Il codice sarà qualcosa di simile:
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"
]);
gli URL: Esso agisce come un filtro di richiesta, e invoca l'ascoltatore solo per alcune richieste.
Per maggiori informazioni: https://developer.chrome.com/extensions/webRequest
Se si desidera cambiare l'intestazione (url) referer che verrà inviato al server quando un utente fa clic su un ancoraggio o iframe è aperto, è possibile farlo senza alcun hack . Basta fare la storia.replaceState, cambierai l'url come apparirà nella barra del browser e anche il referer che verrà inviato al server.
È possibile sostituire solo il percorso o aggiungi-rimuovi i frammenti, non il dominio con 'history.replaceState'. [developer.mozilla.org su history.replaceState] (https://developer.mozilla.org/en-US/docs/Web/API/History_API#The_replaceState() _method) – Cemal
Questo è stato chiesto prima: http://stackoverflow.com/questions/220231/accessing-http-headers-in-javascript –
Non è possibile farlo. –
@TiesonT. In realtà, quella domanda riguarda l'accesso alle intestazioni HTTP, non l'override dell'intestazione 'Referer'. –