Devise-JWT: невозможно получить доступ к заголовку авторизации при выполнении AJAX-запросов к `/ users / sign_in`

#ruby-on-rails #reactjs

#ruby-on-rails #reactjs

Вопрос:

У меня есть интерфейс react, который отправляет AJAX-запросы /users/sign_in , за исключением того, что интерфейс react не может получить доступ ни к одному из заголовков авторизации, которые должны возвращаться.

Я подозреваю, что это потому, что серверная часть rails отправляет перенаправление 302 при успешном входе в систему.

Мне нужен доступ к заголовкам авторизации, и кажется, что у интерфейса нет другого выбора, кроме как следовать перенаправлениям.

Нужно ли мне запретить перенаправление devise при успешном входе в систему или есть какая-то другая причина, по которой мой интерфейс не может видеть заголовки авторизации?

Я установил gem, devise-jwt который добавляет заголовок авторизации к ответу при успешных попытках входа в систему.

Ответ №1:

Я думаю, вам нужно добавить приведенный ниже код в ваше приложение.rb

 config.middleware.insert_before 0, Rack::Cors do
  allow do
    origins '*'
    resource(
      '*',
      headers: :any,
      expose: ["Authorization"],
      methods: [:get, :patch, :put, :delete, :post, :options,               :show]
    )
  end
  

завершение

Комментарии:

1. Да, я добавил это, и я все еще не вижу этого. Я думаю, мне нужно отключить перенаправление после успешных попыток входа в систему. Если я использую cURL и делаю простой POST-запрос без последующей /users/sign_in отправки, ответом будет 302 с включенным заголовком авторизации. Итак, я вижу результат просто отлично с помощью cURL … браузер (из того, что я прочитал) должен следовать этому проклятому перенаправлению 302 … и поэтому похоже, что заголовки просто потеряны.