2015-11-02 16 views
15

Ich rufe einen Backend-Service/Ressource von AngularJs $HTTP GET. Wenn es nicht verfügbar ist gibt es 404 und Chrome Registerkarte Netzwerk zeigt, dass es 404 als die Followings ist:

Request Method:OPTIONS 
Status Code:404 Not Found 

aber innen AngularJS $HTTP Anruf Ergebnis, erhalte ich status=-1 und nicht 404:

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

Warum passiert das?

NB) Ich habe einen Anlegesteg-Dienst auf dem Back-End und aktiviert CORS:

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

Antwort

10

gibt sie -1 zurück, weil, wie die Spuren zeigen, hat die GET-Anforderung nicht einmal gesendet wurde. Was gesendet wurde, ist die OPTIONS-Anfrage vor dem Flug, die durch das Zurücksenden von 404 verhindert hat, dass der Browser die tatsächliche GET-Anfrage sendet.

Ihr Server sollte keine 404-Antwort für die OPTIONS-Anfrage zurückgeben. Es sollte eine Antwort von 200 zurückgeben.