Bonjour,
Je travaille actuellement au développement d'une application avec ionic/AngularJS. Je souhaite interroger un web service. Pour celà j'utilise $http avec le controller ci dessous:
j'ai une erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 .controller('testRestctrl', function($http,$scope,$q,ClientRESTService) { $scope.reponseService; $scope.actiononclik=function(){ var testpromise=function(){ console.log("dans actiononclik"); var prov; var deferred= $q.defer(); $http({ method: 'GET', url: "https://ip-du-serveur/api/entity/get", crossDomain: true }).success(function(data,status){ prov=data; deferred.resolve(prov); }).error(function(data,status){ console.log("erreur de statut"+status+"et"+data) deferred.reject('données non recupérée'); }); return deferred.promise; }; $scope.reponseService=testpromise().then(function(prov){ $scope.reponseService=prov; }, function(){ console.log("errreur dans le retour des promises") } ); } });
pour essayer de la résoudre j'ai inclus le code ci dessous au début de mon module:Blocage d'une requête multi-origines (Cross-Origin Request) : la politique « Same Origin » ne permet pas de consulter la ressource distante située sur https://ip-du-serveur/api/entity/get. Raison : l'en-tête CORS « Access-Control-Allow-Origin » est manquant.
ça n'a rien changé j'ai donc remplacer le $http du contrôleur par celui ci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 .config(function ($httpProvider) { delete $httpProvider.defaults.headers.common['X-Requested-With']; })
avec une var url qui contient l'url https://ip-du-serveur/api/entity/get la aussi aucun changement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 $http({ method: 'JSONP', url: url crossDomain: true })
j'ai essayer de le remplacer par :
ça n'a pas fonctionné non plus j'ai donc essayé avec l'adresse d'un web service de test : http://rest-service.guides.spring.io/greeting
Code : Sélectionner tout - Visualiser dans une fenêtre à part $http.get('https://ip-du-serveur/api/entity/get')
ça a fonctionné.
dans le meme temps si j'utilise l'url 'https://ip-du-serveur/api/entity/get (celle du web service qui m'interesse) sur un navigateur celui ci me demande de lever une exeption de sécurité car le certificat est auto signé mais une fois celà fait j'obtient bien un résultat.
Pouvez vous m'aider car malgrès mes recherches je ne trouve pas de solution coté client et je ne peux pas modifier le serveur hébergeant le webservice ni le web service lui même de plus je suis obligé de l'interroger en https . Merci d'avance.
Ps je débute en AngularJS
Partager