Sto sviluppando un'API Rails e un'applicazione html5 separata. Non condividono lo stesso dominio. Come posso impostare la mia applicazione Rails per accettare richieste tra domini diversi? Ho aggiunto il seguente alla parte superiore del mio ApplicationController, ma senza alcuna fortuna -Impostazione di chiamate interdominio sul server Rails
before_filter :set_access_control_headers
def set_access_control_headers
headers['Access-Control-Allow-Origin'] = 'http://myfrontend.com:3002'
headers['Access-Control-Request-Method'] = 'GET, OPTIONS, HEAD'
headers['Access-Control-Allow-Headers'] = 'x-requested-with,Content-Type, Authorization'
end
mio javascript mia altra applicazione si presenta come segue -
var req = $.ajax({
url: url,
type: "GET",
crossDomain: true,
success: function(data, textStatus, jqXHR)
{
alert('success');
},
error: function(jqXHR, textStatus, errorThrown)
{
alert('error');
}
});
Quando ho eseguito questa richiesta, ho la seguente nel mio log del server -
Started OPTIONS "/api/search?location_uuid=22222222222222222" for 127.0.0.1 at 2013-07-15 16:49:56 -0400
Processing by Api::V1::SearchController#index as JSON
Parameters: {"location_uuid"=>"22222222222222222"}
WARNING: Can't verify CSRF token authenticity
User Load (20.5ms) SELECT "users".* FROM "users" ORDER BY name DESC LIMIT 30 OFFSET 0
(63.1ms) SELECT COUNT(*) FROM "users"
Completed 204 No Content in 300ms (ActiveRecord: 0.0ms)
Qualcuno ha qualche consiglio per far funzionare correttamente questo?
stupido, ma - non è stato implementato l'azione per OPZIONI? Come ti indirizzi per questo aspetto? –
Prova 'after_filter' invece di' before_filter'. – mccannf
Questa è un'osservazione interessante. Nella mia richiesta, specifica GET, ma il log indica che l'intestazione OPTIONS è stata impostata. Il percorso si presenta così - namespace: api, default: {formato: 'json'} fare modulo campo di applicazione:: v1 fare match "/ ricerca",: a => "Cerca indice #" fine end – Blake