J'utilise l'application angularjs-seed et j'essaie d'obtenir une réponse JSON du serveur (MarkLogic) en utilisant $http
. J'y ai été pendant 3 jours essayé toutes les réponses d'autres réponses similaires stackoverflow mais pas en mesure de le faire fonctionner. S'il vous plaît aider!Impossible de contourner CORS dans l'application de semences angularjs
Le navigateur renvoie ceci:
XMLHttpRequest cannot load http://sreddy:8003/v1/search?format=json. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access.
Voici mon code de l'application
app.js
'use strict';
// Declare app level module which depends on filters, and services
var app = angular.module('myApp', [
'ngRoute',
'myApp.filters',
'myApp.services',
'myApp.directives',
'myApp.controllers'
]);
app.config(['$routeProvider', '$httpProvider', function($routeProvider, $httpProvider) {
$routeProvider.when('/view1', {templateUrl: 'partials/partial1.html', controller: 'MyCtrl1'});
$routeProvider.when('/view2', {templateUrl: 'partials/partial2.html', controller: 'MyCtrl2'});
$routeProvider.otherwise({redirectTo: '/view1'});
// to avoid CORS
$httpProvider.defaults.withCredentials = true;
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
}]);
de controllers.js
'use strict';
/* Controllers */
var app = angular.module('myApp.controllers', []);
app.controller('MyCtrl1', ['$scope', 'dataService', function($scope, dataService) {
$scope.test = "test";
$scope.data = null;
dataService.getData().then(function (dataResponse) {
$scope.data = dataResponse;
});
console.log($scope.data);
}]);
app.controller('MyCtrl2', [function() {
console.log("from MyCtrl2");
}]);
services.js
'use strict';
/* Services */
// Demonstrate how to register services
// In this case it is a simple value service.
var app = angular.module('myApp.services', []);
app.value('version', '0.1');
app.service('dataService', function($http) {
this.getData = function() {
// $http() returns a $promise that we can add handlers with .then()
return $http({
method: 'GET',
url: 'http://sreddy:8003/v1/search?format=json'
});
}
});
'Aucun 'L'en-tête' Access-Control-Allow-Origin 'est présent sur la ressource demandée' signifie qu'il attend un en-tête du serveur. Avez-vous ajouté cet en-tête à la réponse du serveur? Vous ne pouvez pas résoudre cela avec les changements côté client seulement. –
Ah! Je pensais que cela pouvait être géré du côté client seul. Laissez-moi essayer encore (la bonne manière) et revenir à vous. Merci Monsieur! – Sudhakar
Ajout d'en-têtes dans le code de réponse du serveur et fonctionnement. Merci Davin. – Sudhakar