Domanda

Sto cercando di utilizzare Resource Sharing Cross-Origin con Access-Control-Consenti -Origin e le intestazioni correlate. Ce l'ho a lavorare su Firefox, ma Chrome mi sta dando errori di autorizzazione, che guardano questo tipo:

XMLHttpRequest cannot load <remote>. Origin <local> is not allowed by Access-Control-Allow-Origin.

L'ispettore spettacoli di rete la richiesta, ma nessuna risposta (e non include le opzioni di richiesta di verifica preliminare e di risposta). Ho controllato l'uscita richiesta utilizzando curl e riprodurre tutte le intestazioni, e quello che vedo si adatta ciò che la specifica implica (e ancora una volta, ciò che Firefox accetta). Sono in perdita come eseguire il debug questo ulteriore - Ci sono trucchi per vedere l'attività di rete ad un livello inferiore di quello che Chrome offre normalmente? Informazioni su come Chrome interpreta CORS richieste in modo diverso rispetto a Firefox?

È stato utile?

Soluzione

ho il sospetto quello che stai vedendo è una verifica preliminare seguita da una richiesta di Chrome non riuscendo a causa di un bug. Questo spiegherebbe perché le cose funzionano in Firefox, ma non in Chrome.

Stai inviando alcun intestazioni personalizzate nella richiesta? C'è un bug in WebKit in cui le richieste GET con intestazioni personalizzate non riesce (bug qui: http : //code.google.com/p/chromium/issues/detail id = 57836 )?. Ho anche notato che Chrome a volte si aspetta che l'header Content-Type nella lista Access-Control-Allow-Basette, anche se Content-Type è un colpo di testa semplice.

Inoltre, si menziona che l'ispettore della rete non include le opzioni di preflight? Quale ispettore di rete stai usando? Mi consiglia di utilizzare Wireshark, dal momento che questo ti dà i dettagli sul traffico di rete reale che ispettore di Chrome non prevede (per esempio, Wireshark registrerà le richieste di verifica preliminare).

Alcuni altri suggerimenti di debug:

Prova la richiesta in Safari. Questo vi aiuterà a restringere verso il basso per un bug Chrome o un bug WebKit.

I tempi che ho visto l'errore che state vedendo (Wireshark mostra una richiesta ma non una risposta), è perché il mio server non include l'intestazione Access-Control-Allow-Origin, che non è inclusa perché Chrome non invia l'intestazione di origine (vedi bug sopra). Nella tua traccia di rete, vedi un'intestazione origine nella richiesta? Avete controllo del server, e se è così, vuol riceve un colpo di testa di origine?

La sua difficile per eseguire il debug il problema effettivo, senza ulteriori dettagli. Se si continua ad avere problemi, puoi pubblicare le intestazioni di richiesta / risposta qui?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top