2011-12-30 3 views
5

Sto tentando di eseguire richieste tra domini con Safari su Windows. La mia versione di Safari è la 5.1.2.Permettere richieste interdominio in Safari e Chrome? Risposta del server rispetto agli argomenti della riga di comando

Questa è una domanda classica. Ho letto in molti luoghi che Chrome e Safari consente le richieste di domini incrociati finché Server risponde con l'intestazione followin nella risposta

Access-Control-Allow-Origin: * 

Ho letto questo post. How to allow cross-domain requests in Safari? e molti altri sul sito StackOverflow.

Tuttavia, nessuno di questi risponde alla mia domanda.

Ho problemi con Chrome AND Safari che eseguono richieste AJAX tra domini anche se invio l'intestazione necessaria dal server.

Ho finalmente eseguito Chrome con "--disable-web-security". Quindi ha funzionato.

Le mie domande:

1) Cosa devo fare con Safari? Uso un argomento della riga di comando simile?

2) Ancora più importante, posso qualcuno mi dica se la funzionalità cross-domain è consentito in Chrome e Safari di default finché server risponde con l'intestazione o devo fare in modo che

a) server risponde con un colpo di testa

E

b) del browser viene avviato con un argomento appropriato.

+0

Ci sono molti dettagli per far funzionare correttamente le richieste tra domini. Tutto dipende dal tipo di richiesta che stai cercando di fare. Puoi fornire maggiori dettagli sulla tua richiesta? Puoi trovare ulteriori informazioni su come effettuare richieste CORS qui: http://www.html5rocks.com/en/tutorials/cors/ – monsur

risposta

4

Ho trovato il problema. Ulteriori informazioni su CORS hanno aiutato html5rocks.com/en/tutorials/cors. Mi sono reso conto che le mie richieste stavano attivando richieste di verifica preliminare (OPZIONI) e che il server non era impostato per gestire correttamente queste richieste. Il motivo per cui stava causando le richieste di preflight era perché stavo usando JQuery e aggiungeva un'intestazione personalizzata nelle mie richieste. Ho modificato il mio codice per impedire l'aggiunta di questa intestazione extra e le mie richieste non necessitavano più delle richieste di verifica preliminare. Ora non devo disabilitare la sicurezza web e funziona bene.

+2

Puoi dire esattamente come hai modificato il tuo codice? Qual era l'intestazione aggiuntiva? Potrei avere lo stesso identico problema. – T3db0t

+0

Controllare il collegamento della documentazione cors sopra. Verifica quando le richieste di verifica preliminare non sono necessarie. Controlla la tua comunicazione http tramite firefug o uno strumento simile del browser ed esamina tutte le sezioni delle intestazioni delle tue richieste http. – CEGRD

+2

Sembra non intestazioni personalizzate (X- *) ma l'intestazione di richiesta Content-Type: "Se si imposta questo valore su qualsiasi valore diverso da application/x-www-form-urlencoded, multipart/form-data o text/plain tu attiverà una richiesta di preflight. " Posso solo dire che tutto ciò sembra sciocco - dov'è la giustificazione per questa follia? – Marc

Problemi correlati