2011-11-22 8 views
18

Qualcuno sa se con jquery o javascript generale, posso cambiare il referrer dall'intestazione in una chiamata http ajax?modifica del referrer di un Ajax POST

in pratica voglio che venga inviato dalla mia pagina ma abbia un referrer da un'altra pagina. Qualsiasi informazione sarebbe grande.

+0

Penso che questo potrebbe essere utile: http://stackoverflow.com/questions/220231/accessing-http-headers-in-javascript – mikeY

+0

Normalmente, è possibile inviare solo richieste al proprio dominio. Perché vuoi ingannare il tuo server cambiando il referer? –

+0

Possibile duplicato di [imposta URL di riferimento con richiesta Ajax] (http://stackoverflow.com/questions/8798706/set-referer-url-with-ajax-request) – user2284570

risposta

39

Il browser sovrascriverà il referrer sempre per i test che ho fatto. Significa che non puoi cambiare il referente di una chiamata Ajax.

+30

Grazie a Dio, non puoi;) –

+0

Posso essere sicuro che se il browser non invia un referente, il mio verrà inviato? – xpy

+2

"Significa che non puoi cambiare il referrer di una chiamata Ajax" - beh, eccetto con il violinista o qualsiasi altra cosa che si frappone tra browser e server;) – Mtz

6

È possibile utilizzare .setRequestHeader('referer', 'foo'), ma non sono sicuro che il browser lo sostituisca con quello giusto o no.

tramite jQuery, il metodo permette .ajax() intestazioni così (.get() e .post() no)

Nota che c'è molto poco senso per fare questo, come non si può fare tra domini AJAX e anche il tentativo di fare questo potrebbe scatenare le regole di sicurezza XHR in alcuni browser e interrompere completamente la richiesta.

+1

il browser sovrascrive il referer: \ thanks though – fmsf

+0

Damn I Vorrei che questo fosse possibile - Sto caricando le "parti" in una sovrapposizione, ad esempio facendo clic sul collegamento di modifica per un elemento verrà visualizzata una sovrapposizione con il modulo di modifica al suo interno, mantenendo l'elenco degli elementi sullo sfondo. Volevo cambiare il referrer all'URL 'parte', così ho potuto prenderlo nel modulo successivo (in modo da poter fare clic su un link per caricare un'altra pagina nell'overlay, e il link posteriore mostrerebbe il modulo precedente). Purtroppo ora devo trovare un altro modo per farlo. +1 per fare effettivamente alcuni test su questo. – ClarkeyBoy

+0

Anche se il browser è cambiato, questa è in realtà la risposta su come. Obviolsy è utile per conoscere la funzione del browser, ma ciò non significa che non possa farlo. Non so su quale scenario sia necessario, ma sono contento di sapere. Grazie. – erm3nda

3

È sempre possibile utilizzare questo:

jQuery.ajaxSetup({ 
    'beforeSend': function(xhr) {xhr.setRequestHeader("header key", "header value")} 
}) 

Ma naturalmente, il browser può avere una diversa opinione circa l'intestazione referer. Questo dovrebbe essere testato :)

+4

Definitivamente rifiutato da Chrome [17.0.963.56]. Se qualcuno vuole testare una diversa abilità del browser, ho creato un paio di jsFiddles: [uno con 'jQuery.ajaxSetup'] (http://jsfiddle.net/patridge/h4Lvp/) e [uno con un'opzione su un singolo' jQuery.ajax' call] (http://jsfiddle.net/patridge/amA3W/). – patridge