Mam podstawowej konfiguracji usługi angularjs tak:angularjs: POST dane do zewnętrznych REST API
app.factory('User', function($resource) {
return $resource('http://api.mysite.com/user/:action:id/:attr', {}, {
history: {
method: 'GET',
params: {
attr: 'history'
}
},
update: {
method: 'POST',
params: {
name: 'test'
}
}
});
});
i używam go tak:
User.history({id: 'testID'}, function(data) {
console.log('got history');
console.log(data);
});
User.update({id: 'me'}, function(data) {
console.log('updated');
console.log(data);
});
Problem pierwszy: User.update(), mimo że metoda jest ustawiona na POST, wysyła wysyłane OPCJE jako metodę żądania.
Chociaż narzędzia do Chrome Chrome zgłaszają nagłówek żądania Metoda kontroli dostępu do żądania: POST również jest wysyłana (nie wiem, czy to oznacza cokolwiek).
Problem drugi: Ciągle otrzymuję błąd z CORS, pomimo tych nagłówków określonych w kodzie API:
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
Problem ten pokazuje tylko, choć jeśli dokonywania non-GET żądania.
Jaki jest właściwy sposób obsługi tego? Zajrzałem również do JSONP, ale z tym, że jest to aplet RESTful, nie jestem pewien, jak obejść problemy tylko z obsługą GET.
Przeglądarka wysyłająca żądanie OPCJE, a następnie żądanie POST było moim problemem. Serwer nie został skonfigurowany, aby reagować na początkowe OPCJE. Nie musiałem jednak nic robić z użyciem tokena x-xsrf. Wykorzystano tutaj kod do obsługi wszystkich niezbędnych nagłówków: http://stackoverflow.com/questions/13293157/backbone-slim-php-access-control-allow-headers-can-get-information-cant/13530329#13530329 –
to był dokładnie mój problem. Dziękuję Ci. Jeśli używasz węzła/ekspresu, postępuj zgodnie z instrukcjami "włącz przed lotem" tutaj, aby uzyskać pracę cors: https://github.com/troygoode/node-cors/ – JasonS