Perché CORS non sembra funzionare con il POST?
-
23-09-2019 - |
Domanda
specifica dice semplice GET
o POST
dovrebbero essere CORS nativamente di verifica preliminare senza ma finora ogni tentativo POST
ho fatto ha portato ad un colpo di testa OPTIONS
uscire. Quando cambio da POST
per ottenere il codice invia immediatamente una richiesta GET
corretta in modo che il sito croce parte sta funzionando benissimo.
Ecco un esempio snellita di quello che sto facendo in 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*/);
}
Ecco cosa avevo già lavorando in Chrome e 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);
Soluzione 2
bene, non so che cosa tutto ContentTypes in realtà lavoro, ma text/plain
fa su tutti e 3 i browser:
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);
Tuttavia finora non ho capito che cosa è fermare la richiesta di fare qualcosa oltre l'esecuzione del metodo di successo anche quando viene restituito un codice 505. Aggiunta di un'intestazione di risposta di Access-Control-Allow-Origin: *
risolto il browser non vogliono leggere i dati di ritorno.
Altri suggerimenti
Ho lo stesso problema
https://developer.mozilla.org/En/HTTP_Access_Control
dice che l'enctype deve essere text / plain o è necessario utilizzare FX4 + Tutte le intestazioni di accesso devono essere impostate correttamente