j'essaie d'envoyer une demande get à l'api comme si c'était une URL de connexion
var url = "http://demo.software.travel/gptp/api/authorization?apiKey=****&alias=****&login=****&password=****"
$.get(url, function(data) {
console.log(data);
});
je reçois ceci dans ma console cette erreur
XMLHttpRequest ne peut pas se charger http://demo.software.travel/gptp/api/authorization?apiKey= **** & alias = **** & login = **** & password = **** . L'en-tête "Access-Control-Allow-Origin" contient plusieurs valeurs " http://travellights.net , *", mais une seule est autorisée. L'origine ' http://travellights.net ' n'est donc pas autorisée à y accéder.
j'essaie de voir les questions ici pour le résoudre, mais je n'ai pas obtenu ce que je dois changer, c'est ennuyeux en fait.
L'en-tête 'Access-Control-Allow-Origin' contient plusieurs valeurs
ceci résolu par asp.net web.congif
Au fait, j'utilise CHROME BROWSER toute aide que j'apprécie.
[~ # ~] mise à jour [~ # ~] en-têtes de réponse:
Access-Control-Allow-Credentials:true
Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:Origin, x-requested-with, Content-Type, accept, Token
Access-Control-Allow-Methods:GET, HEAD, POST, PUT, DELETE, TRACE, OPTIONS
Access-Control-Allow-Origin:http://travellights.net
Access-Control-Allow-Origin:*
Connection:close
Content-Encoding:gzip
Content-Type:application/json;charset=utf-8
Date:Thu, 02 Jun 2016 16:41:18 GMT
Server:nginx/1.1.19
Set-Cookie:JSESSIONID=51FEE1A1206B9B481DD3EEA4167A9256; Path=/gptp
Vary:Origin
Vary:Accept-Encoding
X-UA-Compatible:IE=EmulateIE7
En-têtes de demande:
Accept:application/json, text/javascript, */*; q=0.01
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-US,en;q=0.8,ar;q=0.6,en-GB;q=0.4
Connection:keep-alive
Host:demo.software.travel
Origin:http://travellights.net
Referer:http://travellights.net/b2b/Pages/login?
User-Agent:Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.102 Safari/537.36
Vous essayez de faire le partage de ressources d'origine croisée (CORS) qui est un mécanisme qui permet de demander des ressources restreintes sur une page Web à partir d'un autre domaine en dehors du domaine d'où provient la ressource. (comme l'accès aux polices ou aux fichiers JSON).
Les navigateurs restreignent votre accès aux ressources d'autres origines en vertu de la politique de même origine comme mesure de sécurité pour les utilisateurs d'Internet.
Pour contourner ce problème, vous devez choisir les options suivantes:
Activez CORS sur le serveur pour pouvoir accéder à d'autres domaines via. cela peut être fait en ajoutant les en-têtes suivants aux réponses:
Access-Control-Allow-Origin: http://travellights.net Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept
JSONP encapsule un objet JSON dans un rappel, ce qui fait techniquement de la demande une ressource non restreinte (une balise de script) qui peut donc être partagée entre les domaines.
cela peut être fait via Vanilla js en ajoutant une balise de script sur la page.
function process(data) {
// do stuff with JSON
}
var script = document.createElement('script');
script.src = '//domainURL?callback=process'
document.getElementsByTagName('head')[0].appendChild(script);
ou vous pouvez utiliser jquery pour obtenir le même résultat:
$.ajax({enter code here
url: "http://query.yahooapis.com/v1/public/yql",
jsonp: "callback",
dataType: "jsonp",
data: {
q: "select title,abstract,url from search.news where query=\"cat\"",
format: "json"
},
success: function( response ) {
console.log( response ); // server response
}
});
documentation jquery: https://learn.jquery.com/ajax/working-with-jsonp/
Si vous définissez CORS "complet" (avec pré-demande OPTION) dans nginx en ajoutant 'access-control-allow-Origin *' et indépendamment vous ajoutez cet en-tête (pour CORS simple - sans pré-requête OPTION) à chaque réponse dans SERVER (par exemple php):
header('Access-Control-Allow-Origin', "*");
Ensuite, vous obtiendrez ce problème. Solution: supprimez le code qui ajoute cet en-tête au serveur si vous ajoutez déjà cet en-tête dans votre configuration nginx :)
J'ai trouvé ce conseil ici