質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

1回答

1472閲覧

React,Railsでのエラー 「has been blocked by CORS policy: Response to preflight request doesn’t pass acces」

mika2002

総合スコア20

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/07/03 10:00

RailsとReactでSPAを作成しようとしているのですが、
ログイン周りの実装にについてハマっています。

一度Railsのdevise単体でのログイン処理が行えるように準備し、同じpathにReactからPOSTしてみたのですが。

ブラウザのコンソールに、

Access to fetch at ‘http://localhost:3000/users/sign_in’ from origin ‘http://localhost:8000’ has been blocked by CORS policy: Response to preflight request doesn’t pass access control check: No ‘Access-Control-Allow-Origin’ header is present on the requested resource. If an opaque response serves your needs, set the request’s mode to ‘no-cors’ to fetch the resource with CORS disabled.

こちらのエラーで、
Railsのサーバには、

api_1 | Started OPTIONS “/users/sign_in” for 172.23.0.1 at 2020-07-03 08:02:07 +0000

api_1 |
api_1 | AbstractController::ActionNotFound (The action ‘options’ could not be found for ApplicationController):

こちらのエラーが出ています。

検索し、

https://qiita.com/shimpeiws/items/0cd53ac9da3a7fd645b9

こちらの記事を参考に、

config/routes.rbに

match '*path' => 'options_request#preflight', via: :options

を追加し、

app/controllers/options_request_controller.rbにも

ruby

1 2class OptionsRequestController < ApplicationController 3 ACCESS_CONTROL_ALLOW_METHODS = %w(GET OPTIONS).freeze 4 ACCESS_CONTROL_ALLOW_HEADERS = %w(Accept Origin Content-Type Authorization).freeze 5 def preflight 6 set_preflight_headers! 7 head :ok 8 end 9 private 10 def set_preflight_headers! 11 response.headers['Access-Control-Max-Age'] = ACCESS_CONTROL_MAX_AGE 12 response.headers['Access-Control-Allow-Headers'] = ACCESS_CONTROL_ALLOW_HEADERS.join(',') 13 response.headers['Access-Control-Allow-Methods'] = ACCESS_CONTROL_ALLOW_METHODS.join(',') 14 end 15end 16

こちらを追加しました。

しかし、エラーは変わりませんでした。

この場合に次に同対処すればいいか、アドバイス頂けると嬉しいです。
よろしくお願い致します。

17:08
よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

つい先日同じようなエラーにつまづいたので解決になればと思い投稿いたします。
CORS自体はまだ自分も理解しきれていないのですが、見た所ローカルでの接続ができていないようなので、単純にローカル内での接続ができればいいのであれば[こちらの記事]に記載されているchromeの拡張機能を有効化して試すとうまく行くかもしれません。(https://developer.yukimonkey.com/article/20200227/)

投稿2020/07/03 10:22

GenkiSugiyama

総合スコア86

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問