2011-08-18 12 views

risposta

15

Dai un'occhiata a questa domanda: Sinatra OPTIONS HTTP Verb. Ora è implementato in sinatra in modo da non doverlo aggirare.

Se ciò non aiuta a dare un'occhiata a questo post sul blog: Cross Origin Resource Sharing with Sinatra, e la sua pronti contro termine a GitHub: sinatra-corss_origin

Anche se il modo più semplice per farlo dovrebbe funzionare solo con l'aggiunta di questo:

response['Access-Control-Allow-Origin'] = 'http://whatever.org' 

prima del valore restituito nel percorso.

+2

Non sto usando 'response' ma' headers': 'headers (" Access-Control-Allow-Origin "=>" * ")' – fguillen

+0

Molte grazie per il modo più semplice –

5
get '/foo' do 
    headers 'Access-Control-Allow-Origin' => 'http://example.com' 
    'hello world' 
end 

C'è anche una bella estensione per la condivisione di origine croce:

https://github.com/britg/sinatra-cross_origin

require 'sinatra' 
require 'sinatra/cross_origin' 

# To enable cross origin requests for all routes: 
configure do 
    enable :cross_origin 
end 

# To only enable cross origin requests for certain routes: 
get '/cross_origin' do 
    cross_origin 
    "This is available to cross-origin javascripts" 
end 
+0

La gemma funziona? Ho provato e non sono riuscito a visualizzare l'intestazione 'Access-Control-Allow-Origin' finché non l'ho aggiunta esplicitamente nel mio metodo di risposta come nella risposta di @daddz – sameers

1

Ho fatto questo su un lato server, il mio file è stato chiamato server.rb:

before do 
    content_type :json  
    headers 'Access-Control-Allow-Origin' => '*', 
      'Access-Control-Allow-Methods' => ['OPTIONS', 'GET', 'POST'] 
end 
+0

Grazie. Ho ottenuto solo il primo bit, 'intestazioni" Access-Control-Allow-Origin "=>" * "', per consentire una richiesta GET. Non ho provato altri verbi. –