Ruby on RailsのAPIモードにおいてCORSを有効にする方法
CORSとは
「オリジン間リソース共有」のこと。
特定オリジンからのリクエスト受け付けるよ設定的な。逆に許可されていないオリジンからの通信は拒絶する。
たぶん。
有効化
APIモードであればコメントを無効化していけば簡単にできる。
1. Gemfileを編集
# Use Rack CORS for handling Cross-Origin Resource Sharing (CORS), making cross-origin AJAX possible gem 'rack-cors'
自環境では25行目付近でした。gem 'rack-cors'
をアンコメントすればOK
2. cors.rbを編集
# Be sure to restart your server when you modify this file. # Avoid CORS issues when API is called from the frontend app. # Handle Cross-Origin Resource Sharing (CORS) in order to accept cross-origin AJAX requests. # Read more: https://github.com/cyu/rack-cors 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 '*'
だと全てのオリジンからの要求を許可します。
これだとまずい場合は指定する。指定方法はString型で羅列するか、正規表現にも対応している。
origins 'https://tap-f4f38--pr11-develop-tu0tha9l.web.app', /\Ahttps:\/\/.*.shmn7iii.net\z/
こうすると
・https://tap-f4f38--pr11-develop-tu0tha9l.web.app
・shmn7iii.net
配下のサブドメイン全て
を許可するようになる。安全だね。
したらRailsを再起動すればOK
参考