前提・実現したいこと
Ruby on Railsでアプリケーションを製作しています。Rails初学者です。
作成しているアプリケーションで、Annict APIというGraphqlを用いたAPIのデータを取得したいと思い
アプリケーションにGem graphiql-rails,graphqlをインストール。
Graphiqlを用いてローカル環境でAPIにアクセスしようとするとCORSエラーが発生してしまう。
解決法を教えていただきたく宜しくお願いします
発生している問題・エラーメッセージ
Access to fetch at 'https://api.annict.com/graphql' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: The value of the 'Access-Control-Allow-Origin' header in the response must not be the wildcard '*' when the request's credentials mode is 'include'.
POST https://api.annict.com/graphql net::ERR_FAILED
該当のソースコード
config/routes.rb
Rails.application.routes.draw do if Rails.env.development? mount GraphiQL::Rails::Engine, at: "/graphiql", graphql_path: "https://api.annict.com/graphql" end post "/graphql", to: "graphql#execute" .......... end
config/initializers/graphiql.rb
GraphiQL::Rails.config.headers["Authorization"] = -> (context) { "Bearer アクセストークン" }
config/initializers/cors.rb
Rails.application.config.middleware.insert_before 0, Rack::Cors do allow do origins 'https://api.annict.com/' resource '*', headers: :any, methods: [:get, :post, :options], credentials: true end end
試したこと
エラーの内容を読み、「CORSの設定が悪いのでは?」と考え、Gem rack-corsをインストール
自動で作成されなかったためcors.rbを作成し、originsの中身を'https://api.annict.com/'に,
credentialsをtrueにしたが状況は分からなかった
原因かも
・routes.rbの「graphql_path: 」の部分にエンドパスを記入するのが間違っているのか?
・「graphiql.rb」内のヘッダーの書き方が間違っているのか?
参考にしたもの
Annict API 公式リファレンス
(トークンの取得やエンドポイント、ヘッダーについて参考にしました)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。