2011-08-18 14 views
12

Ho due rotaie applicazioni locali che vorrei parlare tra loro a scopo di test ... uno è in esecuzione sulla porta 3000 e l'altro sul 9292.Access-Control-Allow-Origin emette

Ma quando faccio una richiesta AJAX da localhost: 3000 a localhost: 9292 Continuo a ricevere questo problema:

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

Qualche idea su come risolvere questo problema?

Sto utilizzando una semplice app Sinatra per ricevere (a scopo di test SOLO) richieste JSON. Qui di seguito è come ho ottenuto due applicazioni Rails parlare tra loro su localhost (uno sulla porta 3000 e l'altro sulla porta 9292)
codice di lavoro

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 

Spero che questo aiuti!

+3

Dai un'occhiata a JSONP http://en.wikipedia.org/wiki/JSONP – Gazler

risposta

4

AJAX per domini incrociati non è generalmente consentito per motivi di sicurezza. JSONP è un'opzione se sei in grado di usarlo. In caso contrario, è possibile utilizzare qualcosa come flXHR per aggirare questa restrizione.

Buona fortuna!

+2

Ho capito come funziona seguendo questo blog: http: //www.tsheffler.com/blog/? P = 428 ... Modificherò la mia base di codici sopra – dennismonsewicz

+0

Questo non è corretto. Cross site ajax è consentito se il server specifica che l'origine è consentita nelle intestazioni di risposta. – doug65536

+0

Hai ragione, impostando Access-Control-Allow-Origin, Access-Control-Allow-Methods, ecc consentirà richieste di ajax su più domini. –

0

per me, c'era uno stato 50X/40X in fase di ritorno Chrome/WebKit ha visualizzato un errore denominato Access-Control-Allow-Origin.

Ho giocato con le mie risposte fino a quando ho ottenuto un 201 e ora funziona!