J'ai travaillé sur un projet AngularJS qui doit envoyer des appels AJAX à un webservice. Ce webservice est sur un autre domaine donc j'ai dû activer les cors sur le serveur. Je l'ai fait en mettant ces en-têtes: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");
Je suis en mesure d'envoyer des requêtes AJAX de AngularJS au back-end mais je suis face à un problème lorsque je tente d'obtenir un attribut d'une session. Je crois que c'est parce que le cookie sessionid n'est pas envoyé au backend.
J'ai été en mesure de résoudre ce problème dans jQuery en définissant withCredentials sur 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);
}
})
});
Le problème que je suis face est que je ne peux pas obtenir ce travail dans AngularJS avec le service http $. Je l'ai essayé comme ceci:
$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);
});
Quelqu'un peut-il me dire ce que je fais mal?
+1 et si vous utilisez ngresource vous déclarer l'appel de méthode avec quelque chose comme ' » getUserDetail ': {méthode:' GET ', params: {}, withCredentials: true} ' – ch4nd4n
Dans ce cas, uniquement withCredentials: true va dans ce formulaire ou aussi options Content-Type, Accept, crossDomain, Access-Control-Allow-Credentials/Origine/En-têtes? – wanttobeprofessional
Dans ce cas, la version plus ancienne et plus récente est? – wanttobeprofessional