【问题标题】:cross-domain session problem in railsrails中的跨域会话问题
【发布时间】:2011-05-12 23:17:12
【问题描述】:

我有一项允许将调查嵌入页面的服务。此调查从托管在任何地方的页面对我的服务器进行跨域 ajax 调用。

该服务在 rails 3 上运行。我正在尝试存储会话中回答的最后一个问题的索引。 ActiveRecord 存储处于活动状态。该服务托管在 heroku 上。我已经迁移了会话表并对其进行了倾斜。

但是值没有保存在会话中。这是一个我无法解决的问题,还是可以让会话以这种方式工作?

以下是问题的说明:

 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

还是只是我的会话不能正常工作,不考虑跨域问题?

只是一个快速的补充:似乎每次点击服务器时都会创建一个唯一的会话,并且下次不会检索。它将每次通话都视为一个新的、前所未有的事件。我认为这是我所从事的跨领域的副产品。有什么解决办法吗?

【问题讨论】:

  • 你使用什么样的会话?曲奇饼 ?主动记录?其他?
  • 您是如何尝试进行跨域 ajax 调用的?由于默认情况下在每个主要浏览器中都禁用此功能,您正在尝试以这种方式发出请求吗?
  • 您正在测试的浏览器中是否启用了第三方 cookie?

标签: jquery ruby-on-rails session jsonp


【解决方案1】:

对于延迟回复深表歉意 - cookie 被清除并丢失了对这个问题的跟踪。

我正在通过 jQuery ajax 调用使用跨域调用,并且连接效果很好。我在页面加载时调用了一个初始化例程,该例程调用远程服务器并获取一个 JSON 对象,该对象用于组装在浏览器中运行的调查表,并将结果发送回服务器。它在 JSON 中嵌入了一系列代码,无需会话。但是当用户更改页面时,我需要服务器知道当下一页收到 init 调用时,它是它已经看到的连接。

我正在使用 ActiveRecord 会话。我可以在会话表中看到这些累积,并且似乎每个新连接都会创建一个新会话。这些连接几乎都是通过ajax连接。

我正在通过嵌入在页面上的脚本编写 cookie,该脚本也连接到远程服务,这暗示了一种自己滚动的持久性机制——从服务器获取密钥,然后检查它。我可能会在服务器端进行 IP 检查,以将现在单独的会话缝合在一起,我想...

【讨论】:

  • 丹,这不是一个“答案”,它只是对您问题的澄清。也许您应该只编辑您的问题以添加此信息,然后删除此“答案”。
猜你喜欢
  • 2013-10-11
  • 2015-05-22
  • 1970-01-01
  • 1970-01-01
  • 2011-01-27
  • 1970-01-01
  • 2010-10-30
  • 2013-09-10
  • 2010-11-23
相关资源
最近更新 更多