Esto no parece funcionar:AJAX entre dominios de verificación previa comprobación no Origen
$.ajax({
url: "http://localhost:3000/foo.json",
data: { foo: 'bar' },
headers: { 'HTTP_X_CUSTOMHEADER': 'foobar' },
xhrFields: { withCredentials: true }
});
Cuando corro en jsFiddle, una solicitud OPTIONS
(de acuerdo a las herramientas de depuración Chrome) dispara que tiene este aspecto:
Access-Control-Request-Headers: Origin, HTTP_X_CUSTOMHEADER, Accept
Access-Control-Request-Method: GET
Origin: http://fiddle.jshell.net
Y luego (de acuerdo con las herramientas de depuración Chrome) mi servidor local devuelve los siguientes encabezados:
(reordenada en forma manual para Reada bilidad)
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
Y luego, en la consola aparece un mensaje de error como este:
XMLHttpRequest cannot load http://localhost:3000/foo.json?foo=bar.
Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin.
de cabeza, pero Access-Control-Allow-Origin
parece idéntica a cuando mi servidor respondió con la solicitud de verificación previa. Entonces, ¿qué pieza me falta aquí de este rompecabezas?
¿Cómo se ven los encabezados de la solicitud saliente? Deben incluir un encabezado [Origen:] (https://developer.mozilla.org/en/HTTP_access_control). Sin embargo, creo que el navegador [siempre lo agrega] (https://developer.mozilla.org/en/HTTP_access_control#Origin). – daxelrod
Actualizó la pregunta con los encabezados de la solicitud de opciones. –