これは何?
CORS の設定が反映されているのかを確認する方法になります。
今回、サーバー側は Rails を使用します。
確認環境
$ bundle exec rails --version
Rails 6.0.4.6
CORS の設定前の確認
$ curl localhost:3000 --head
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Content-Type: text/html; charset=utf-8
ETag: W/"9b005ffa5c5afcde4622c7b65d9908d0"
Cache-Control: max-age=0, private, must-revalidate
Content-Security-Policy: script-src 'unsafe-inline'; style-src 'unsafe-inline'
X-Request-Id: b9e4dbbb-d5e0-4ae7-9a19-f989af3e995f
X-Runtime: 0.126126
Vary: Origin
Gem install
gem 'rack-cors'
config 更新
config/application.rb
config.middleware.insert_before 0, Rack::Cors do
allow do
origins 'sample.com'
resource '/', headers: :any, methods: [:get, :options]
end
end
CORS の設定確認
$ curl -X GET -H "Access-Control-Request-Method: GET" -H "Origin: https://sample.com" --head http://localhost:3000
HTTP/1.1 200 OK
Access-Control-Allow-Origin: https://sample.com
Access-Control-Allow-Methods: GET, OPTIONS
Access-Control-Expose-Headers:
Access-Control-Max-Age: 7200
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
X-Download-Options: noopen
X-Permitted-Cross-Domain-Policies: none
Referrer-Policy: strict-origin-when-cross-origin
Content-Type: text/html; charset=utf-8
ETag: W/"9b005ffa5c5afcde4622c7b65d9908d0"
Cache-Control: max-age=0, private, must-revalidate
Content-Security-Policy: script-src 'unsafe-inline'; style-src 'unsafe-inline'
X-Request-Id: 61430f41-f2ac-4840-bfd2-47580f9702f3
X-Runtime: 0.010819
Vary: Origin
Transfer-Encoding: chunked
Access-Control-Allow-Origin
などが header に追加されます。
おわりに
動作検証用の環境をローカルに作りましたが、Docker 用意しとくのも良いかもと思いました。