Webエンジニアの森脇です。rack-corsを利用して、RailsでCORSの設定をしてみました。
rack-corsの基本的な使い方
gemを追加して、cors.rbファイルに下記のように記載します。 originsに許可したいアクセス元のoriginを定義します。
Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do origins 'localhost:3000' resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete, :options, :head], end end
複数のOriginを許可する
複数のOriginを許可するには、以下のようにoriginsに併記します。
Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do origins 'localhost:3000' , 'localhost:8080' resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete, :options, :head] end end
正規表現も利用できるため、「*.example.com」というようにサブドメインを許可するような指定も可能です。
Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do origins /\Ahttps:\/\/.*.example.com\z/ resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete, :options, :head] end end
Cookieを利用する場合
Cookieを利用する場合は、「credentials: true」を追記します。
Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do origins 'localhost:3000' resource '*', headers: :any, methods: [:get, :post, :put, :patch, :delete, :options, :head], credentials: true end end