Невозможно проверить подлинность токена CSRF Ошибка для приложения Rails с несколькими серверами приложений - PullRequest
0 голосов
/ 14 февраля 2019

У нас есть 4 сервера приложений, и все они используют один и тот же secret_key_base.Но по какой-то причине мы испытываем эту временную ошибку: Can't verify CSRF token authenticity.Я подозреваю, что так происходит:

  • Пользователь X посещает GET /posts/new страницу и сервер приложений 01 обслуживает ее
  • Пользователь заполняет форму и отправляет ее, но POST /posts HTTP-запросидет к серверу приложений 02 и Can't verify CSRF token authenticity происходит ошибка

^ Я думаю, что это произошло, потому что я смог воспроизвести проблему, выполнив шаги ff:

  • Зайдите на страницу GET app-server-01.mywebsite.com:3000/posts/new, а затем извлеките маркер authenticity_token из источника HTML
  • . Запустите HTTP-запрос POST app-server-01.mywebsite.com:3000/posts, и он будет работать
  • . Но когда я отправляю HTTP-запрос POST app-server-02.mywebsite.com:3000/posts, он не работает

По какой-то причине токен, генерируемый app-server-01, действителен только для app-server-01.

Значение Rails.application.config.session_store в настоящее время установленона :cookie_store, key: '_mywebsite_session'

Rails 4.2.8 ruby ​​2.5.1p57

Кто-нибудь знает решение вышеуказанной проблемы?И какова точная причина проблемы?

...