CORSを有効にする, originを複数指定する

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'
Gemfile

自環境では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
config/initializers/cors.rb

下半分くらいをアンコメント。

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

参考