C'è una soluzione (hack) ho lo ha fatto molte volte, sarete in grado di pubblicare con JsonP. (Sarete in grado di modulo per l'inserimento, più grande di 2000 char che è possibile utilizzare da GET) applicazione client
Javascript
$.ajax({
type: "POST", // you request will be a post request
data: postData, // javascript object with all my params
url: COMAPIURL, // my backoffice comunication api url
dataType: "jsonp", // datatype can be json or jsonp
success: function(result){
console.dir(result);
}
});
JAVA:
response.addHeader("Access-Control-Allow-Origin", "*"); // open your api to any client
response.addHeader("Access-Control-Allow-Methods", "POST"); // a allow post
response.addHeader("Access-Control-Max-Age", "1000"); // time from request to response before timeout
PHP:
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: POST');
header('Access-Control-Max-Age: 1000');
In questo modo, si sta aprendo il server a qualsiasi richiesta di post, è necessario ripristinarlo fornendo identità o qualcos'altro.
Con questo metodo, si potrebbe anche cambiare il tipo di richiesta da jsonp a JSON, sia il lavoro, è sufficiente impostare la risposta giusta tipo di contenuto
jsonp
response.setContentType("text/javascript; charset=utf-8");
JSON
response.setContentType("application/json; charset=utf-8");
Si prega di notare che il server non rispetterà più SOP (stessa origine nella politica), ma a chi importa?
Hai detto che un "POST asincrono" non è possibile .... allora posso fare un POST sincrono? – Mark
@mark "POST sincrono" indica l'invio di un modulo che utilizza
Questo non è del tutto vero.Certamente puoi fare richieste POST ad altri domini fintanto che sia dominio che browser supportano 'CORS'. Ma è assolutamente vero che 'POST' e' JSONP' non sono compatibili. – hippietrail