#ruby #session #nginx #thin
#ruby #сеанс #nginx #тонкий
Вопрос:
Настройка веб-сервера: nginx / thin / ruby-sinatra
Я использую объект сеанса из ruby для хранения различной информации и возврата к path
session[:username] = 'username'
session[:token] = 'token'
session[:error] = ''
session[:return_to] = '/start_page'
Проблема 1:
На моем сервере, если клиентом является IE, вся информация в объекте сеанса теряется при перезагрузке страницы. Firefox и Chrome работают нормально.
Если я возьму код веб-страницы сохранения и помещу его на другой сервер с той же настройкой, у меня вообще не возникнет проблем. Все 3 браузера (один и тот же клиент) работают хорошо и запоминают сеансы.
Что может пойти не так с настройкой? Почему только IE??
Проблема 2:
На моем сервере сеанс [:session_id] не инициализируется, пока я не установлю некоторую переменную для сеанса, но если я запускаю тот же код на другом сервере, сеанс [:session_id] доступен при первом доступе.
Почему существует разное поведение для полностью идентичных настроек??
Комментарии:
1. Пожалуйста, поддержите вопрос, если вы его просмотрели и не смогли ответить. Это приведет к большему количеству просмотров и, возможно, ответов. Спасибо.
2. Вы уверены, что обе настройки имеют одну и ту же версию sinatra? Они оба работают в одном и том же режиме? (производство, разработка). Также может помочь, если вы покажете нам еще немного своего кода. Например, я предполагаю, что вы используете Rack::Session::Cookie. Какие параметры вы передаете?
3. Я не знаю, что такое Rack ::Session::Cookie. Помимо кода в Q, все, что я использую, это метод enable :sessions в ruby configure .
4. Я проверил версии sinatra, у меня была 1.3.1, а у других машин, запоминающих сеансы, была 1.2.6. Я изменил свою на 1.2.6 all, и IE начинает работать! Проблема 1 решена. Спасибо.
5. Остается вопрос, почему sinatra 1.3.1 забывает сеансы для IE, это ошибка или я что-то упускаю?
Ответ №1:
Похоже, это ошибка sinatra 1.3.1, см. Комментарии К вопросу для разрешения