2014-10-06 7 views
6

Robię POST do usługi przy użyciu Postman Chrome Extension i uzyskać oczekiwaną odpowiedź.

Ale, gdy wykonuję to samo zlecenie POST za pomocą $http, wszystko idzie do piekła.

dostaję:

Request header field Engaged-Auth-Token is not allowed by Access-Control-Allow-Headers 

Engaged-Auth-Token jest nagłówek.

Nie mam pojęcia, dlaczego z Postman działa i nie działa z Chrome ...

Jakieś pomysły?

Odpowiedz

0

Problem polega na tym, że brakuje Access-Control-Allow-Headers z nagłówka żądania. Aby rozwiązać ten problem, musimy dodać Access-Control-Allow-Headers: *, aby zamówić nagłówek

Dodaj Access-Control-Allow-Headers do http request header. Możesz to zrobić na poziomie aplikacji, używając $httpProvider. Dodaj poniżej linii w sekcji konfiguracji aplikacji, aby dodać ten nagłówek.

var app = angular.module("app", [ 
    "ngRoute", 
    "app.controllers", 
    "app.directives", 
    "app.filters" 
]); 

app.config([ 
    "$routeProvider", 
    "$httpProvider", 
    function($routeProvider, $httpProvider){ 
     $httpProvider.defaults.headers.common['Access-Control-Allow-Headers'] = '*'; 
    } 
]); 
+10

wierzę, że to musi przeczytać $ httpProvider.defaults.headers.common [ 'Access-Control-Allow-headers'] = ' * "; Zwróć uwagę na cytaty wokół * w przeciwnym razie dostaniesz różnego rodzaju błędy. –

7

wierzę konfigurowania kontroli dostępu-allow-headers na $ httpProvider na kliencie nie będzie działać. Myślę, że nagłówek musi zostać skonfigurowany na serwerze (jako nagłówek odpowiedzi). W aplikacji węzła-express na przykład, można to zrobić za pomocą oprogramowania warstwy pośredniej (na przykład), stawiając coś takiego:

res.header('*') 

lub (bardziej selektywnie) tylko nagłówki trzeba:

res.header('Engaged-Auth-Token, Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With'); 
0

jeśli stosowanie żagle api na cors.js zmian backend i dodaj swój żeton złożony tutaj

module.exports.cors = { 
    allRoutes: true, 
    origin: '*', 
    credentials: true, 
    methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD', 
    headers: 'Origin, X-Requested-With, Content-Type, Accept, Engaged-Auth-Token' 
}; 
Powiązane problemy