Sto avendo qualche problema con condivisione delle risorse Croce Origine e Prototype. Ho una semplice richiesta POST a una risorsa straniera, e per una semplice richiesta di posta ci sono alcune regole che devono essere soddisfatte:condivisione delle risorse Croce origine con PrototypeJS
il Content-Type deve essere su di application/x-www-form-urlencoded, multipart/form-data, o text/plain, una semplice richiesta non imposta intestazioni personalizzate con la richiesta http e il server deve impostare l'intestazione Access-Control-Allow-Origin corretta.
con un vaniglia JavaScript XMLHttpRequest tutto funziona bene ma con PrototypeJS non funzionerà perché si inserisce Prototype imposta alcune intestazioni personalizzate e non so come prevenirlo.
ho provato in Prototype via:
new Ajax.Request('some.foreign-host.com/res.php', {
method: 'post',
postBody: 'foo=bar',
contentType: 'application/x-www-form-urlencoded',
onSuccess: function(e){
// some custom code
}
});
Qualsiasi idea di come raggiungere prototipo per inviare un tale semplice richiesta CORS?
Ho una discarica delle intestazioni create da una pianura JavaScript XMLHttpRequest:
POST /bthesis/returnJSON.php HTTP/1.1
Host: foreign-host.com
Connection: keep-alive
Referer: this-host.com
Content-Length: 9
Origin: this-host.com
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Accept: */*
User-Agent: [...]
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
e le intestazioni create da un prototipo Richiesta:
OPTIONS /bthesis/returnJSON.php HTTP/1.1
Host: foreign-host.com
Connection: keep-alive
Referer: this-host.com
Access-Control-Request-Method: POST
Origin: this-host.com
Access-Control-Request-Headers: X-Prototype-Version, X-Requested-With, Content-type, Accept
Accept: */*
User-Agent: [...]
Accept-Encoding: gzip,deflate,sdch
Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
usi Prototype un set di intestazione completamente diverso ... che porta al seguente errore nella console:
XMLHttpRequest non può caricare foreign-host.com/bthesis/returnJSON.php. Campo di intestazione richiesta X-Prototype: la versione non è consentita da Access-Control-Allow-Headers. Rifiutato per ottenere un'intestazione non sicura "X-JSON"
La cosa strana è che il server Web restituisce in entrambi i casi la risorsa richiesta (lo vedo nella vista "Risorse" della console di sviluppo in chrome) ma le cuciture quel prototipo non ha accesso ad essa in qualche modo
Questo ha funzionato per me. Grazie – FosAvance