J'essaie d'envoyer une demande Ajax à un serveur Tomcat à partir de mon application, mais j'obtiens cette erreur (mon application Web s'exécute sur Chrome):
La réponse à la demande de contrôle en amont ne réussit pas la vérification du contrôle d'accès: aucun en-tête 'Access-Control-Allow-Origin' n'est présent sur la ressource demandée. Origin 'null' n'est donc pas autorisé à accéder. La réponse avait le code d'état HTTP 403.
J'ai essayé d'utiliser
'Access-Control-Allow-Origin' : 'http://localhost:8080/app',
mais ça n'a pas marché.
Mon code Ajax:
var arr = [1];
$.ajax({
url: 'http://localhost:8080/app',
type: 'POST',
contentType:'application/json',
headers: {
'Access-Control-Allow-Origin' : 'http://localhost:8080',
},
data: JSON.stringify(arr[0]),
success: function(data){
//On ajax success do this
alert(data);
}
});
Fondamentalement, pour faire une requête interdomaine AJAX, le serveur demandé doit permettre le partage de ressources entre origines (CORS). Vous pouvez en savoir plus à ce sujet à partir d’ici: http://www.html5rocks.com/en/tutorials/cors/
Dans votre scénario, vous définissez les en-têtes du client qui doivent en fait être définis dans http: // localhost: 8080/app code côté serveur.
Si vous utilisez le serveur Apache PHP, vous devrez ajouter ce qui suit dans votre fichier .htaccess
:
Header set Access-Control-Allow-Origin "*"
En cas de demande à un service REST:
Vous devez autoriser le CORS (partage d'origine croisé de ressources) sur le noeud final de votre annotation REST Service with Spring:
@CrossOrigin(origins = "http://localhost:8080")
Très bon tutoriel: https://spring.io/guides/gs/rest-service-cors/