2011-08-18 23 views

答えて

15

ここでこの質問をご覧ください:Sinatra OPTIONS HTTP Verb今はsinatraに実装されているので、あなたはそれをハックする必要はありません。

それは、このブログの記事を見ても解決できない場合:Cross Origin Resource Sharing with Sinatra、とgithubのでそのレポ:sinatra-corss_origin

それを行うための最も簡単な方法は、これを追加することでうまく動作する必要がありますが:

response['Access-Control-Allow-Origin'] = 'http://whatever.org' 
あなたのルートの戻り値の前に

+2

私は 'response'ではなく' headers'を使用しています: 'headers(" Access-Control-Allow-Origin "=>" * ")' – fguillen

+0

最も簡単な方法に感謝します –

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

クロスオリジン・共有のための素敵な拡張もあります:

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

宝石は機能しますか?私は試してみましたが、@daddzの答えのように私の応答メソッド内に明示的に追加するまで、 'Access-Control-Allow-Origin'ヘッダーを表示することができませんでした – sameers

1

私は私のファイルがserver.rb呼ばれた、サーバー側でこれをした:

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

ありがとうございました。私はGETリクエストを許可するために、最初のビット、 'headers" Access-Control-Allow-Origin "=>" * "'を取り除いた。他の動詞を試してみませんでしたか? –

関連する問題