неоднозначное поведение переменных сеанса настройки сервера nginx/ruby/thin

Настройка веб-сервера: nginx/thin/ruby-sinatra

Я использую объект сеанса из ruby ​​для хранения различной информации и возврата к пути

session[:username] = 'username' 
session[:token] = 'token'
session[:error] = '' 
session[:return_to] = '/start_page'

Проблема 1:

На моем сервере, если клиент IE, вся информация в объекте сеанса теряется, когда я перезагружаю страницу. Firefox и Chrome работают нормально.

Если я возьму код сохранения веб-страницы и положу его на другой сервер с той же настройкой, у меня вообще не возникнет проблемы. Все 3 браузера (один и тот же клиент) работают хорошо и запоминают сеансы.

Что может пойти не так с настройкой? Почему только ИЕ??

Проблема 2:

На моем сервере session[:session_id] не инициализируется, пока я не установлю какую-либо переменную для сеанса, но если я запущу тот же код на другом сервере, session[:session_id] будет доступен при первом доступе.

Почему существует разное поведение для полностью идентичных настроек??


person Schu    schedule 24.10.2011    source источник
comment
Пожалуйста, проголосуйте за вопрос, если вы просматриваете его и не можете ответить. Это приведет к большему количеству просмотров и, возможно, ответов. Спасибо.   -  person Schu    schedule 24.10.2011
comment
Вы уверены, что обе установки имеют одинаковую версию Sinatra? Они оба работают в одном режиме? (производство, разработка). Кроме того, это может помочь, если вы покажете нам еще немного своего кода. Например, я предполагаю, что вы используете Rack::Session::Cookie. Какие варианты вы его передаете?   -  person bioneuralnet    schedule 24.10.2011
comment
Я не знаю, что такое Rack::Session::Cookie. Помимо кода в Q, все, что я использую, это метод enable :sessions in ruby ​​configure.   -  person Schu    schedule 25.10.2011
comment
Я проверил версии Sinatra, у меня была 1.3.1, а на других машинах, запоминающих сеансы, была 1.2.6. Я сменил на 1.2.6 все и IE начинает работать! Задача1 решена. благодарю вас.   -  person Schu    schedule 25.10.2011
comment
Остается вопрос, почему Sinatra 1.3.1 забывает сеансы для IE, это ошибка или я что-то упустил?   -  person Schu    schedule 25.10.2011
comment
заметил, что это происходит в IE8, но работает в IE6 + IE7 .... не уверен, что wtf работает   -  person eyberg    schedule 16.11.2011
comment
При аналогичной настройке (Nginx в качестве обратного прокси-сервера для Thin+Sinatra) большинство моих приложений работают нормально, но я столкнулся с ситуацией с новым приложением, когда информация о сеансе продолжает теряться даже в «нормальных» браузерах. как Хром и Сафари. Требуются дополнительные исследования, но похоже, что это относится к Nginx и, возможно, связано с XHR.   -  person Phrogz    schedule 07.03.2012


Ответы (1)


Кажется, это ошибка с sinatra 1.3.1, см. Комментарии к вопросу для решения.

person Schu    schedule 02.05.2012