AngularJS с учетными данными
мы работали над проектом AngularJS, который должен отправлять вызовы AJAX в исправный веб-сервис. Этот веб-сервис находится в другом домене, поэтому мне пришлось включить cors на сервере. Я сделал это, установив следующие заголовки:
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");
я могу отправлять запросы AJAX от AngularJS на сервер, но яЯ сталкиваюсь с проблемой, когда пытаюсь получить атрибут сеанса. Я полагаю, что это потому, что сессионный cookie неотправить в бэкэнд
Я смог исправить это в jQuery, установив withCredentials в 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);
}
})
});
Проблема в том, что яЯ сталкиваюсь с тем, что я могузаставить его работать в AngularJS со службой $ http. Я попробовал это так:
$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);
});
Может кто-нибудь сказать мне, что яя делаю неправильно?