En-tête CORS ‘Access-Control-Allow-Origin’ manquant

J’appelle cette fonction depuis mon formulaire asp.net et j’obtiens l’erreur suivante sur la console Firebug en appelant ajax.

Demande croisée d’origine bloquée: la stratégie d’origine identique n’autorise pas la lecture de la ressource distante à l’ adresse http: //anotherdomain/test.json . (Raison: l’en-tête CORS ‘Access-Control-Allow-Origin’ est manquant).

var url= 'http://anotherdomain/test.json'; $.ajax({ url: url, crossOrigin: true, type: 'GET', xhrFields: { withCredentials: true }, accept: 'application/json' }).done(function (data) { alert(data); }).fail(function (xhr, textStatus, error) { var title, message; switch (xhr.status) { case 403: title = xhr.responseJSON.errorSummary; message = 'Please login to your server before running the test.'; break; default: title = 'Invalid URL or Cross-Origin Request Blocked'; message = 'You must explictly add this site (' + window.location.origin + ') to the list of allowed websites in your server.'; break; } }); 

J’ai fait alternativement mais toujours incapable de trouver la solution.

Remarque: Je n’ai pas de droits sur le serveur pour effectuer des modifications côté serveur (API / URL).

Cela se produit généralement lorsque vous essayez d’accéder aux ressources d’un autre domaine.

Il s’agit d’une fonction de sécurité permettant d’éviter à tout utilisateur d’accéder librement aux ressources de ce domaine (accessibles par exemple pour avoir une copie identique de votre site Web sur un domaine pirate).

L’en-tête de la réponse, même s’il s’agit de 200OK, ne permet pas aux autres origines (domaines, port) d’accéder aux ressources.

Vous pouvez résoudre ce problème si vous êtes propriétaire des deux domaines:

Solution 1: via .htaccess

Pour changer cela, vous pouvez écrire ceci dans le fichier .htaccess du fichier de domaine demandé :

   Header set Access-Control-Allow-Origin "*"  

Solution 2: définissez les en-têtes correctement

Si vous définissez cela dans l’en-tête de réponse du fichier demandé, vous autoriserez tout le monde à accéder aux ressources:

 Access-Control-Allow-Origin : * 

OU

 Access-Control-Allow-Origin : http://www.my-domain.com 

Paix et code;)

dans votre requête ajax, en ajoutant:

 dataType: "jsonp", 

après ligne:

 type: 'GET', 

devrait résoudre ce problème ..

j’espère que cela vous aidera

Vous devez modifier le code côté serveur, comme indiqué ci-dessous

 public class CorsResponseFilter implements ContainerResponseFilter { @Override public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException { responseContext.getHeaders().add("Access-Control-Allow-Origin","*"); responseContext.getHeaders().add("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); } } 

Vous devez avoir compris pourquoi vous rencontrez ce problème après avoir lu les réponses ci-dessus.

 self.send_header('Access-Control-Allow-Origin', '*') 

Il vous suffit d’append la ligne ci-dessus dans votre serveur.

Votre navigateur ne permet pas votre demande .. vous devez installer addon votre navigateur web

Pour Chrome: https://chrome.google.com/webstore/detail/allow-control-allow-origi/nlfbmbojpeacfghkpbjhddihlkkiljbi?hl=fr

Pour Firefox https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/

Meilleur moyen, vous pouvez append un en-tête côté serveur

Accès-Contrôle-Autoriser-Origine: *