Rails 5 API + React + CORS + Heroku + GH Pages - PullRequest
0 голосов
/ 09 ноября 2018

Утро всем

У меня снова есть головокружительный миг, и он может воспользоваться помощью.

У меня есть клиент React, использующий Rails 5 API. На localhost все отлично работает, работает отлично. Сначала я развернул клиент на страницах GH, а API - в Heroku, но не мог отправлять запросы на сервер, я получаю следующее:

Access to XMLHttpRequest at 'https://xxxx.herokuapp.com/auth/login' from origin 'https://xxxx.github.io' 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

Тот же запрос отлично работает от Почтальона, но теперь он тоже не работает в localhost, поэтому я ничего не могу сделать: - (

Проблема, по-видимому, в CORS - я перепробовал несколько конфигураций, но, похоже, ничто не мешает, так как я продолжаю получать точно такую ​​же ошибку.

У меня есть rack-cors gem. Мой application.rb выглядит так:

config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'
    resource '*', :headers => :any, :methods => :any # also tried [:get, :post, etc]
  end
end

Одна странность в том, что когда я запускаю bundle exec rake middleware, я получаю 2 use Rack::Cors вверху списка - кажется, не могу понять, почему.

Я пытался вручную установить заголовки в application_controller.rb:

after_filter :cors_set_access_control_headers



def cors_preflight_check
    if request.method == 'OPTIONS'
      cors_set_access_control_headers
      render text: '', content_type: 'text/plain'
    end
  end

  # protected
  def cors_set_access_control_headers
    headers['Access-Control-Allow-Origin'] = '*'
    headers['Access-Control-Allow-Methods'] = 'POST, PUT, DELETE, GET, PATCH, OPTIONS'
    headers['Access-Control-Request-Method'] = '*'
    headers['Access-Control-Allow-Headers'] = 'Origin, X-Requested-With, Content-Type, Accept, Authorization, Credentials'
  end

Я пробовал несколько других вещей, но все еще получал ту же чертову ошибку. Некоторая помощь будет потрясающей, спасибо заранее!

1 Ответ

0 голосов
/ 09 ноября 2018

Исправлено - я как-то пропустил невероятно очевидный файл cors.rb, который имел неправильную origins настройку

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...