2015-11-02 14 views
15

Wywołuję usługę/zasób backendu przez AngularJs $HTTP GET. Jeżeli nie jest dostępny zwraca 404 i zakładka Chrome sieci pokazuje, że jest 404 jako poniższych:Kątowy status HTTP (-1)

Request Method:OPTIONS 
Status Code:404 Not Found 

ale wewnątrz angularjs $HTTP wynikiem połączenia, mam status=-1 i nie 404:

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

Dlaczego tak się dzieje?

NB) Mam usług Molo na backend i włączona CORS:

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

Odpowiedz

10

zwraca -1, ponieważ, jak pokazują ślady, żądanie GET nawet nie została wysłana. To, co zostało wysłane, to żądanie OPCJE przed lotem, które, zwracając 404, uniemożliwiło przeglądarce wysłanie rzeczywistego żądania GET.

Twój serwer nie powinien zwracać odpowiedzi 404 dla żądania OPTIONS. Powinien zwrócić odpowiedź 200.