2013-05-06 5 views
5

Sto utilizzando XDomainRequest in IE8 & 9 per inviare richieste a un server. Con XMLHttpRequests in altri browser, sia un'intestazione Origin e Referer vengono inviati, e potrebbe essere la seguente:IE8/9 AJAX/CORS (XDomainRequest) invia l'intestazione di riferimento

Origin: http://www.example.com 
Referer: http://www.example.com/mypage/index.htm 

Ma XDomainRequest invia solo l'origine (quindi non vedo l'URL completo di chiamata). C'è un modo per costringerlo a inviare anche il Referer? Sto cercando di evitare di inviarlo come stringa di query o parametro POST.

So che XDomainRequest non consente intestazioni personalizzate, ma spero che poiché Referer è un'intestazione standard potrebbe esserci un modo per abilitarlo.

+1

Per cosa ti serve il referente? – Bergi

+0

Per visualizzare l'URL completo del chiamante. L'origine fornisce solo il dominio radice. In particolare, lo uso per la registrazione e una forma molto grezza di controllo degli accessi (lo spoofing del referrer richiede il coinvolgimento dell'utente finale o un plug-in del browser). – Dave

+0

Controllo accesso? Non usare Referer per questo, può essere facilmente falsificato e non è garantito che sia accurato (il tuo esempio di IE, i proxy, ecc.). – Bergi

risposta

1

Uno dei miei co-dev aveva questo problema, che il servizio CORS chiamava intestazioni obbligatorie per "sicurezza", ma IE non poteva inviare intestazioni. Abbiamo trovato alcuna soluzione per IE8/9 problema intestazioni a parte:

  1. avere il servizio non richiede un colpo di testa
  2. Avere un proxy che aggiungerà le intestazioni necessari sulla vostra richiesta.

L'opzione 2 spiegata è: impostare un proxy Web che accetti la chiamata senza intestazioni. Fa quindi chiamare il CORS e aggiunge l'intestazione alla richiesta. Riceve il carico utile e lo inoltra alla richiesta.

Per quello che vale, abbiamo andato con l'opzione 1.