2011-08-18 23 views

Trả lời

15

Hãy xem câu hỏi này tại đây: Sinatra OPTIONS HTTP Verb. Nó được thực hiện trong sinatra bây giờ, do đó bạn không cần phải hack xung quanh nó.

Nếu điều đó không giúp hãy nhìn vào bài đăng blog: Cross Origin Resource Sharing with Sinatra, và repo tại github: sinatra-corss_origin

Mặc dù cách đơn giản nhất để làm điều đó nên làm việc chỉ bằng cách thêm này:

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

trước giá trị trả lại trong tuyến đường của bạn.

+2

Tôi không sử dụng các tiêu đề 'phản hồi' nhưng' tiêu đề': '(" Access-Control-Allow-Origin "=>" * ")' – fguillen

+0

Rất cám ơn vì cách đơn giản nhất –

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

Ngoài ra còn có một phần mở rộng thoải mái để chia sẻ nguồn gốc chéo:

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

Đá quý có hoạt động không? Tôi đã thử, và tôi không thể nhận được tiêu đề 'Access-Control-Allow-Origin' để hiển thị cho đến khi tôi thêm nó một cách rõ ràng trong phương thức phản hồi của tôi như trong câu trả lời của @daddz – sameers

1

Tôi đã làm điều này trên một phía máy chủ, tập tin của tôi được gọi server.rb:

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

Cảm ơn bạn. Tôi đã nhận được chỉ với bit đầu tiên, 'tiêu đề 'Access-Control-Allow-Origin" => "*" ', để cho phép một yêu cầu GET. Không thử động từ khác. –