У нас есть приложение Rails 5.2.3, работающее на Devise 4.6.2 и развернутое в Heroku. Приложение использовало домен example.com и все было хорошо. Сегодня нам нужно было изменить этот домен на app.example.com (example.com теперь является сайтом WordPress), и теперь, когда мы пытаемся войти в приложение, мы получаем:
Can't verify CSRF token authenticity
Completed 422 Unprocessable Entity in 19ms
ActionController::InvalidAuthenticityToken (ActionController::InvalidAuthenticityToken):
vendor/bundle/ruby/2.6.0/gems/actionpack-5.2.3/lib/action_controller/metal/request_forgery_protection.rb:211:in `handle_unverified_request'
Одна вещь, которую я Мы поняли, что теперь наше производственное приложение не устанавливает сессионный повар ie. Наше промежуточное приложение (которое использует домен example.herokuapp.com) устанавливает повар ie с именем '_myapp_session' (и он все еще работает нормально), в то время как в нашем производственном приложении нет установленного повара ie. Погугляя по этому поводу, я нашел некоторые упоминания о конфигурации session_store.rb (у нас даже не было этого файла), поэтому я создал файл в config / initializer и попытался установить его в наш домен app.example.com, а также на домен:: все, но, похоже, это ничего не меняет.
Rails.application.config.session_store :cookie_store, key: '_app_myapp_session', domain: :all
Что мне здесь не хватает? Почему изменение домена помешало бы приложению создать сессионный повар ie? О, и мы используем Cloudflare в качестве нашего DNS, и его __cfduid cook ie настроен правильно. Может ли это быть связано?