Questo non sembra funzionare:tra domini AJAX preflight di controllo in mancanza Origine
$.ajax({
url: "http://localhost:3000/foo.json",
data: { foo: 'bar' },
headers: { 'HTTP_X_CUSTOMHEADER': 'foobar' },
xhrFields: { withCredentials: true }
});
Quando eseguo su jsfiddle, una richiesta OPTIONS
(secondo gli strumenti di debug Chrome) spara che assomiglia a questo:
Access-Control-Request-Headers: Origin, HTTP_X_CUSTOMHEADER, Accept
Access-Control-Request-Method: GET
Origin: http://fiddle.jshell.net
E poi (secondo gli strumenti di debug Chrome) il mio server locale restituisce i seguenti intestazioni:
(riformattato manualmente per reada bilità)
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: HTTP_X_CUSTOMHEADER
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Origin: http://fiddle.jshell.net
Access-Control-Max-Age: 10
Cache-Control: no-cache
Connection: Keep-Alive
Content-Length: 1
Content-Type: text/html; charset=utf-8
Date: Wed, 14 Sep 2011 22:42:28 GMT
Server: WEBrick/1.3.1 (Ruby/1.8.7/2010-01-10)
X-Runtime: 2
E poi nella console ottengo un messaggio di errore simile a questo:
XMLHttpRequest cannot load http://localhost:3000/foo.json?foo=bar.
Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin.
di testa che però Access-Control-Allow-Origin
appare identico a quando il mio server ha risposto con la richiesta di verifica preliminare. Quindi quale pezzo mi manca qui di questo puzzle?
Che aspetto hanno le intestazioni della richiesta in uscita? Dovrebbero includere un'intestazione [Origine:] (https://developer.mozilla.org/en/HTTP_access_control). Tuttavia, credo che il browser [lo aggiunga sempre] (https://developer.mozilla.org/en/HTTP_access_control#Origin). – daxelrod
Aggiornata la domanda con le intestazioni dalla richiesta di opzioni. –