2010-11-20 3 views
0

У меня есть служба, которая позволяет обследовать, чтобы быть встроенным в страницу. Этот опрос делает переадресацию ajax-вызовов на мой сервер, со страниц, размещенных везде.проблема междоменной сессии в рельсах

Служба работает на рельсах 3. Я пытаюсь сохранить индекс последнего вопроса, заданного в сеансе. Активное хранилище ActiveRecord. Услуга размещена на героку. Я перенес таблицу сеанса и сгребал ее.

Но значения не сохраняются в сеансе. Является ли это проблемой, с которой я не могу обойтись, или это возможно, чтобы сеансы работали таким образом?

Вот иллюстрация проблемы:

Rails.logger.info { "session current stage is #{session[:current_stage]}" }  
session[:current_stage] = params[:current_stage].to_i 
session[:current_stage] ||= 0 
Rails.logger.info { "session current stage is #{session[:current_stage]}" } 

выход выглядит следующим образом:

session current stage is 0 
session current stage is 1 

В следующий раз он работает (после того, как стоимость сеанса 1):

session current stage is 0 
session current stage is 2 

Или это только то, что мои сеансы работают некорректно, независимо от междоменных проблем?

Простое добавление: кажется, что уникальный сеанс создается каждый раз, когда сервер попадает, а затем не извлекается в следующий раз. Он рассматривает каждый вызов как новое, беспрецедентное событие. Я предполагаю, что это побочный продукт перекрестного домена, который я делаю. Любые решения?

+0

какой сеанс вы используете? Печенье? ActiveRecord? Другие ? – shingara

+0

Как вы пытаетесь сделать междоменные аякс-вызовы? Поскольку это по умолчанию отключено в каждом главном браузере, что вы делаете, чтобы попробовать и сделать запросы таким образом? –

+0

Поддерживаются ли сторонние файлы cookie в браузере, с которым вы тестируете? – molf

ответ

0

Извинения за ответ, связанный с задержкой, - файлы cookie были уничтожены и потеряны.

Я использую междоменные вызовы через jQuery ajax-вызовы, и соединения работают отлично. Я вызываю процедуру инициализации при загрузке страницы, которая вызывает удаленный сервер, и получает объект JSON, который он использует для сборки вопросника, который запускается в браузере, и отправляет результаты обратно на сервер. Он имеет ряд кодов, встроенных в JSON, что устраняет необходимость в сеансах. Но когда пользователь меняет страницы, мне нужен сервер, чтобы знать, что, когда следующая страница получает вызов init, это соединение, которое оно уже увидело.

Я использую сеансы ActiveRecord. Я вижу, как они накапливаются в таблице сеансов, и кажется, что каждое новое соединение создает новый сеанс. Эти соединения почти все через соединения ajax.

Я пишу cookie через скрипт, встроенный на страницу, которая также соединяется с удаленной службой, что предполагает механизм рутинга собственного присутствия - получить ключ от сервера, а затем проверить его. Я мог бы, вероятно, сделать IP-проверки на стороне сервера, чтобы сшить то, что теперь представляет собой отдельные сеансы вместе, я полагаю ...

+0

Дэн, это не «ответ», это просто разъяснение вашего вопроса. Возможно, вам нужно просто изменить свой вопрос, чтобы добавить эту информацию, и удалить этот «ответ». – edgerunner

Смежные вопросы