【Sinatra】GraphQL 用の最低限の CORS の設定
2022/08/13
Sinatra アプリに生やした GraphQL のエンドポイントに、フロント(React)からアクセスできるように CORS の設定をした
CORS 用の Gem を使わないやり方で、1番シンプルな書き方になってると思う
require 'sinatra/base'
class App < Sinatra::Application
+ before do
+ response.headers['Access-Control-Allow-Origin'] = '*'
+ response.headers['Access-Control-Allow-Methods'] = 'POST'
+ response.headers['Access-Control-Allow-Headers'] = 'Content-Type'
+
+ halt(200) if request.request_method == 'OPTIONS'
+ end
post '/graphql' do
result = AppSchema.execute(
params[:query],
variables: params[:variables],
context: { current_user: nil }
)
json result
end
use Rack::JSONBodyParser
end
response.headers['Access-Control-Allow-Origin']
は厳密にやるならちゃんと指定した方がいいと思う
halt(200) if request.request_method == 'OPTIONS'
が重要だった
プリフライト・リクエストを覚えた