2015-11-02 19 views
15

Io chiamo un servizio/risorsa di backend da parte di AngularJs $HTTP GET. Quando non è disponibile restituisce 404 e scheda Chrome Network dimostra che è 404 come i seguenti:

Request Method:OPTIONS 
Status Code:404 Not Found 

ma dentro AngularJs $HTTP risultato chiamata, ottengo status=-1 e non 404:

{data: null, status: -1, config: Object, statusText: ""} 

Perché succede?

NB) Ho un servizio molo sul backend e abilitato CORS:

"Access-Control-Allow-Origin":"*" 
"Access-Control-Allow-Headers": "origin, content-type, accept, authorization" 
"Access-Control-Allow-Methods": "GET, POST, PUT, DELETE, OPTIONS, HEAD" 

risposta

10

restituisce -1 perché, come dimostrano le tracce, la richiesta GET è nemmeno stato inviato. Ciò che è stato inviato è la richiesta OPZIONI pre-volo, che, restituendo 404, impediva al browser di inviare la richiesta GET effettiva.

Il server non deve restituire una risposta 404 per la richiesta OPZIONI. Dovrebbe restituire una risposta di 200.