Pourquoi ne CORS semble pas fonctionner avec POST?
-
23-09-2019 - |
Question
dit GET
simples ou POST
devraient être nativement CORS est sans aucun contrôle en amont, mais jusqu'à présent toute tentative de POST
je l'ai fait a donné lieu à un en-tête de OPTIONS
sortir. Quand je changerai de POST
pour obtenir le code envoie immédiatement une demande de GET
appropriée si la partie cross site fonctionne très bien.
Voici un exemple amincie de ce que je fais dans Firefox:
var destinationUrl = 'http://imaginarydevelopment.com/postURL';
var invocation = new XMLHttpRequest();
if (invocation) {
invocation.open('POST', destinationUrl, true);
//tried with and without this line
//invocation.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
invocation.onreadystatechange = (function Handler() {
if (invocation.readyState == 4)
alert('Request made');
});
invocation.send(/* tried with and without data*/);
}
Voici ce que j'avais déjà travailler en chrome et IE:
var destinationUrl = 'http://imaginarydevelopment.com/postURL';
var destination = { url: destinationUrl, type: 'POST', success: AjaxSuccess, error: AjaxError,
dataType: 'text', contentType: 'application/x-www-form-urlencoded'
};
destination.data = { 'rows': rowList, 'token': token };
$jq.ajax(destination);
La solution 2
bien, je ne sais pas ce que tous les ContentTypes fonctionnent réellement, mais text/plain
ne sur tous les 3 navigateurs:
var destination = { url: destinationUrl, type: 'POST', success: AjaxSuccess, error: AjaxError,
contentType: 'text/plain'
};
var postData={ 'anArray': theArray, 'token': token };
destination.data=JSON.stringify(postData);
$jq.ajax(destination);
Mais jusqu'à présent, je ne l'ai pas compris ce qui empêche la demande de faire quoi que ce soit en plus d'exécuter la méthode de succès, même si un code 505 est retourné. Ajout d'un en-tête de réponse de Access-Control-Allow-Origin: *
a résolu le navigateur ne voulant pas lire les données de retour.
Autres conseils
J'ai le même problème
https://developer.mozilla.org/En/HTTP_Access_Control
dit que le enctype doit être text / plain ou vous devez utiliser Ix4 + Tous les en-têtes d'accès doivent être réglés correctement