2011-08-18 12 views
12

Tengo dos carriles aplicaciones locales que me gustaría hablar unos con otros para propósitos de prueba ... uno se ejecuta en el puerto 3000 y la otra en 9292.Access-Control-Allow-Origen emite

Pero cuando hago una petición ajax de localhost: 3000 a localhost: 9292 me siguen dando este problema:

Origin http://localhost:3000 is not allowed by Access-Control-Allow-Origin.

Cualquier idea sobre cómo solucionar este problema?

Estoy usando una aplicación simple de Sinatra para recibir (SOLAMENTE para pruebas) solicitudes JSON. A continuación se muestra cómo llegué dos carriles de aplicaciones hablar el uno al otro en el servidor local (una en el puerto 3000 y el otro en el puerto 9292)
Código de Trabajo

before do 
    headers['Access-Control-Allow-Origin'] = '*' 
    headers['Access-Control-Allow-Methods'] = 'POST, GET, OPTIONS' 
    headers['Access-Control-Allow-Headers'] = 'X-Requested-With, X-Prototype-Version, X-CSRF-Token' 
end 

after do 
    headers['Access-Control-Allow-Origin'] = 'http://localhost:3000/' 
end 

Espero que esto ayude!

+3

Eche un vistazo a JSONP http://en.wikipedia.org/wiki/JSONP – Gazler

Respuesta

4

Dominio cruzado AJAX generalmente no está permitido por razones de seguridad. JSONP es una opción si puede usarlo. De lo contrario, puede usar algo como flXHR para evitar esta restricción.

¡La mejor de las suertes!

+2

Lo he conseguido siguiendo este blog: http: //www.tsheffler.com/blog/? P = 428 ... Editaré mi base de código por encima de – dennismonsewicz

+0

Esto no es correcto. El sitio cruzado ajax está permitido si el servidor especifica que el origen está permitido en los encabezados de respuesta. – doug65536

+0

Tiene razón, establecer Access-Control-Allow-Origin, Access-Control-Allow-Methods, etc. permitirá solicitudes ayax entre dominios. –

0

para mí, había un estado de 50X/40X que vuelve atrás Chrome/WebKit muestra un error de nombre-control-permiso-origen.

¡Jugué con mis respuestas hasta que obtuve un 201 y ahora funciona!

Cuestiones relacionadas