web-dev-qa-db-fra.com

Demande d'origine croisée bloquée au moment de l'envoi de la demande de publication

J'ai 2 serveurs et 2 domaines je veux envoyer une demande de publication d'un domaine à un autre mais mon navigateur affiche une erreur 

l'accès à XMLHttpRequest à ' https://example.com ' à partir de l'origine ' https://www.example2.com ' a été bloqué par la stratégie CORS: la réponse à la demande de contrôle en amont ne donne pas accès contrôle de contrôle: la valeur de l'en-tête 'Access-Control-Allow-Origin' dans la réponse ne doit pas être le caractère générique '*' lorsque le mode d'informations d'identification de la demande est 'include'. Le mode d'informations d'identification des demandes initiées par XMLHttpRequest est contrôlé par l'attribut withCredentials.

le code javascript que j'utilise Pour envoyer des données postales est 

<script>
var data = JSON.stringify({
  "key": "value sent"
});
var xhr = new XMLHttpRequest();
xhr.withCredentials = true;
xhr.addEventListener("readystatechange", function () {
  if (this.readyState === 4) {
    console.log(this.responseText);
  }
});
xhr.open("POST", "https://example.com");
xhr.setRequestHeader("content-type", "application/json");
xhr.setRequestHeader("cache-control", "no-cache");
xhr.send(data);
</script>

Ma question est donc de savoir comment résoudre ce problème et envoyer une demande de publication à un autre domaine et quelle méthode utiliser pour envoyer une demande de publication. 

1
Anurag Batra

vous pouvez y parvenir simplement en modifiant votre caractère générique Access-Control-Allow-Allow-Origin en https://www.example2.com et le problème sera résolu. 

Access-Control-Allow-Origin: https://www.example2.com

cette demande inter-domaines CORS est une sécurité utilisée par les sites Web pour empêcher tout accès non autorisé à l'aide de JavaScript. L'ajout d'en-têtes résoudra le problème.

0
include conio.h

Vous devez activer CORS sur votre serveur. Dans le cas de NodeJs, vous pouvez faire quelque chose comme ceci:

app.use(function(req, res, next) {
  res.header("Access-Control-Allow-Origin", "*");
  res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
  next();
});

app.post('/', function(req, res, next) {
  // request from other domain will work here
});

dans l'utilisation du navigateur

function createCORSRequest(method, url) {
  var xhr = new XMLHttpRequest();
  if ("withCredentials" in xhr) {
    xhr.open(method, url, true);
  } else if (typeof XDomainRequest != "undefined") {
    xhr = new XDomainRequest();
    xhr.open(method, url);
  } else {
    xhr = null;
  }
  return xhr;
}
0