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):
こちらのエラーが出ています。
検索し、
こちらの記事を参考に、
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
よろしくお願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。