Questo è quello che abbiamo fatto per IE.
Se si ha il controllo sul dominio di destinazione, ospitare lì un file html (statico). Includi l'html usando l'iframe.
Ora questo iframe ha effettivamente accesso al dominio locale, quindi è possibile comunicare tra il frame padre e figlio per ottenere ciò di cui si ha bisogno.
Questo ha funzionato molto meglio di XDomainRequest per noi.
window.postMessage è il modo migliore per impostare la comunicazione:
Ma sono abbastanza sicuro che solo iniziato a lavorare dal IE8. Se hai bisogno di browser più vecchi, devi usare un altro hack.
Nel nostro caso, questo era il nostro sistema a 3 strati:
- CORS, per i browser che lo supportano
- Un iframe & window.postMessage come ripiego primario
- Un proxy server-side script come fallback secondario
Tutte queste opzioni funzionano bene, sono affidabili e non si sentono troppo come un hack. Il ripiego secondario è stato usato quasi mai.
Ricordare che l'intestazione "Autenticazione" è specificamente speciale e non sarei scioccato dal fatto che sia comunque bloccato in determinate circostanze. Abbiamo aggiunto un'intestazione personalizzata 'X-Authenticate' mentre passava tutto il tempo.
Ho dato un'occhiata alla soluzione alternativa dell'iframe negli ultimi giorni. Ma dal momento che devi impostare 'document.domain', sembra funzionare solo per la comunicazione tra due sottodomini dello stesso TLD. Ma per quanto riguarda due diversi TLD? (Potrei dover scavare più a fondo nelle cose del server proxy nel fine settimana ...) –
La soluzione iframe * dovrebbe * funzionare se l'iframe è ospitato nello stesso dominio dell'API. Se uno script proxy è una soluzione per te, potrebbe essere * molto * più facile per i tuoi scopi. Si noti che è (di solito) non tanto un server proxy, in quanto è solo uno script proxy lato server. – Evert
ok, ho fatto funzionare l'iframe. Sto passando un oggetto con tutte le informazioni (intestazioni, post-corpo, ...) alla finestra del frame, che esegue le richieste e restituisce la risposta. :) Informazioni sullo script proxy: se ospito lo script sul server API, dovrei comunque inviare la richiesta con le intestazioni in Ajax. Quindi lo script dovrebbe trovarsi sullo stesso server della pagina "request"? (=^cliente)? In questo modo, IE mi consente di inviare intestazioni, corpo, ecc. e il proxy invia la richiesta al api-server (curl)?!? –