Ruby on Railsでクロス
Ruby on Railsはデフォルトだと自身以外リクエストを受け付けません。
最近はフロントはVue.jsやReactで作ってバックはRailsみたいな構成が当たり前なので、このままだとフロント側からのリクエストを受け付けてくれません。
受付してもらうためにCORS (Cross-Origin Resource Sharing) の設定を行います。
Rack CORSの有効化
Gemfileを開いて以下のコメントを外します。
# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible
gem "rack-cors"
Gemfile修正後は以下でインストールします。
> bundle install
cors.rb の設定
config/initializers/cors.rb を開いて設定します。
とりあえず手っ取り早くなんでもかんでも受け付けるようにするには以下です。
Rails.application.config.middleware.insert_before 0, Rack::Cors do
allow do
origins '*'
resource '*',
headers: :any,
methods: [:get, :post, :put, :patch, :delete, :options, :head]
end
end
実験的にはともかく、本番環境で動かす場合はセキュリティ上好ましくないのでoriginsの部分をちゃんと設定するようにします。
たとえば localhost:3000 と localhost:3001、あと https://www.example.com だけ受付する場合は以下のように書きます。
origins 'localhost:3000', 'localhost:3001', 'https://www.example.com'
これでフロント側から呼び出せるようになります。
コメント
コメントを投稿