2014-07-03 16 views
6

Może to być ogólny problem, który może być dostępny w Internecie, ale to, co mam, jest tutaj.AngularJS - ustaw nagłówek HTTP dla żądania GET

Adding a custom header to HTTP request using angular.js

Więc po to samo, i zmienił kod do

Ustawianie nagłówku

var config = {headers: { 
       'Authorization': 'XXXYYY token="xxxxxxxx", realm="dash-api"', 
       "X-Testing" : "testing" 
       } 
      }; 

Wezwanie żądanie GET:

return $http.get(api.host+'/agn/12/adv/1860/cam?status=1', config).then(function (response) { 
        return { 
         status:"success", 
         data:response.data.data.active 
        }; 
       }, function (error) { 
        return { 
         status:"error", 
         data:error 
        } 
       }); 

Jak widać Żądanie zostanie zapisane w typie Metoda OPCJE i Authorization token nie jest ustawiony w żądaniu.

Proszę, pomóżcie mi w tym numerze, ponieważ walczę od dwóch dni.

Wielkie dzięki.

enter image description here

+1

Wykluczyliście CORS jako problem? http://stackoverflow.com/questions/19554414/angularjs-disabling-cors – miqid

+1

Jestem pewien, że to żądanie CORS. Nie wiem, dlaczego 'api.host' byłby tam, gdyby żądanie dotyczyło tego samego serwera, na którym znajdowała się aplikacja. Ma to sens dla dostawcy API, aby NIE zezwalał również na CORS, ponieważ wydaje się, że wykonuje uwierzytelnianie tokenowe na niezabezpieczonym kanale. – ivarni

Odpowiedz

1

myślę, że jeśli spojrzeć na linku dotyczą, otrzymujesz ten sam problem co autor i autor tego postu podała, że ​​był CORS problem - serwer on komunikuje się z CORS, potwierdza to w swoim komentarzu do własnego stanowiska.

Jeśli chodzi o to, dlaczego otrzymujesz żądanie OPTIONS, dzieje się tak dlatego, że CORS wysyła do serwera żądanie "przed lotem", aby ustalić, czy CORS ma być obsługiwany, zanim wykona rzeczywiste żądanie.

0

Widzisz żądanie OPTIONS najprawdopodobniej dlatego, że robisz żądanie krzyżowego pochodzenia (CORS). Po pierwsze, twój serwer powinien obsługiwać CORS (odpowiadając na żądanie OPTIONS z ustawionym nagłówkiem Access-Control-Allow-Origin w odpowiedzi).

Jeśli tworzysz uwierzytelnione żądanie pochodzenia krzyżowego, podczas składania żądania musisz ustawić withCredentials na true.

$http.get(url, { withCredentials: true })