Утро всем
У меня снова есть головокружительный миг, и он может воспользоваться помощью.
У меня есть клиент 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
Я пробовал несколько других вещей, но все еще получал ту же чертову ошибку. Некоторая помощь будет потрясающей, спасибо заранее!