2015-04-17 10 views
6

Sto utilizzando AngularJS, ma ho riscontrato lo stesso problema con JQuery e anche in JavaScript. Se il server remoto a cui sto accedendo imposta Access-Control-Allow-Origin, vengono invocati i metodi success o error.Come acquisire un errore di Access-Control-Allow-Origin?

Quando non è presente nessun Access-Control-Allow-Origin, viene chiamato e posso vedere solo l'errore nella console. C'è un modo per catturare l'errore No Access-Control-Allow-Origin nel mio codice JavaScript?

E nel caso siate interessati a un caso d'uso, sto costruendo un front-end per PyPi https://pypi.python.org/ Lì, è possibile ottenere le informazioni sui pacchetti in formato JSON. (ad esempio https://pypi.python.org/pypi/dspy/json). Queste richieste impostano Access-Control-Allow-Origin, ma se invio una richiesta per un pacchetto che non è sul server (es. https://pypi.python.org/pypi/dspyz/json) allora non ho Access-Control-Allow-Origin e quindi non ottengo nulla invocato nel mio codice JavaScript.

Aggiornamento

Dopo alcuni altri esperimenti ho scoperto che il metodo error è stato chiamato solo ha generato un'eccezione a causa di qualche problema con il codice che ho usato e che mi indurre in errore.

+1

Ovviamente, viene chiamato 'error'. – zeroflagL

risposta

3

Questo non è possibile a causa di motivi di sicurezza. Annusando la rete locale degli utenti sarebbe possibile.

Ulteriori informazioni here.

Collega i crediti a Eithedog per il suo commento.

+0

Significa che il codice JavaScript non sa della richiesta respinta? È silenziosamente non risposto come se fosse un timeout? – szabgab

+1

Sì, ho appena provato di nuovo. Si ottiene esattamente lo stesso tipo di oggetto errore, quando si ascolta 'xhr.onerror' se è un' timeout' o un 'No Access-Control-Allow-Origin'. L'unico modo per distinguere questi errori in modo non sicuro è tracciare il tempo trascorso da quando hai avviato la richiesta. –

Problemi correlati