Pracowałem nad projektem AngularJS, który musi wysyłać wywołania AJAX do restfull webservice. Ten serwis internetowy znajduje się w innej domenie, więc musiałem włączyć cors na serwerze. Zrobiłem to przez ustawienie tych nagłówków:AngularJS withCredentials
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Origin", "http://localhost:8000");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Credentials", "true");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
cresp.getHttpHeaders().putSingle("Access-Control-Allow-Headers", "Content-Type, Accept, X-Requested-With");
jestem w stanie wysyłać żądań AJAX z angularjs do backend ale jestem w obliczu problemu, gdy próbuję uzyskać atrybut sesji. Sądzę, że dzieje się tak dlatego, że plik cookie sessionid nie jest wysyłany do backendu.
Byłem w stanie naprawić to w jQuery, ustawiając zCredentials na true.
$("#login").click(function() {
$.ajax({
url: "http://localhost:8080/api/login",
data : '{"identifier" : "admin", "password" : "admin"}',
contentType : 'application/json',
type : 'POST',
xhrFields: {
withCredentials: true
},
success: function(data) {
console.log(data);
},
error: function(data) {
console.log(data);
}
})
});
$("#check").click(function() {
$.ajax({
url: "http://localhost:8080/api/ping",
method: "GET",
xhrFields: {
withCredentials: true
},
success: function(data) {
console.log(data);
}
})
});
Problem, przed którym stoję, polega na tym, że nie mogę uruchomić tego w AngularJS z usługą $ http. Próbowałem tak:
$http.post("http://localhost:8080/api/login", $scope.credentials, {withCredentials : true}).
success(function(data) {
$location.path('/');
console.log(data);
}).
error(function(data, error) {
console.log(error);
});
Czy ktoś może mi powiedzieć, co robię źle?
+1 i jeśli używasz ngresource byś zadeklarować wywołanie metody z czymś w rodzaju '” getUserDetail ': {method:' GET ', params: {}, withCredentials: true} ' – ch4nd4n
W tym przypadku tylko zCredentials: true idzie w tej formie lub też opcje Content-Type, Accept, crossDomain, Access-Control-Allow-Credentials/Origin/Headers? – wanttobeprofessional
W tym przypadku starsza i nowsza wersja to? – wanttobeprofessional