跨多个域名使用 Sinatra 会话变量?

Posted

技术标签:

【中文标题】跨多个域名使用 Sinatra 会话变量?【英文标题】:Use Sinatra session variables across multiple domain names? 【发布时间】:2011-12-26 06:48:08 【问题描述】:

我正在构建一个 Sinatra 应用程序,它需要为一件非常具体的事情使用会话变量。会话变量在用户查看启用 SSL 的页面时设置。

我正在使用 Heroku 的搭载 SSL,所以 SSL url 类似于 https://myapp.heroku.com

但是,应用程序本身托管在我的网址 myapp.com

有没有办法让我在使用 ssl / heroku 域名时设置的会话变量在使用我的域名时对我的应用程序可用?

【问题讨论】:

【参考方案1】:

很遗憾,没有,因为 cookie 与域相关联。您需要做的是允许经过身份验证的用户使用https://foo.heroku.com 域,并为登录页面和其他未经身份验证的页面保留您的好域。

或者支付 20 美元购买 heroku 的 SSL 插件。

(我在http://appkickstand.com 中遇到了这个确切的问题,我选择只处理登录用户的heroku url)

【讨论】:

这就是我现在所做的...一旦您访问我的网站并单击“立即购买”,它会将您发送到 heroku 的子域,并且您会在整个购买过程中停留在那里。【参考方案2】:

你应该寻找跨域cookies手册,检查this。

但我认为通过安全通道设置 cookie 并稍后通过原始 HTTP 传输它的理由并不多,每个人都可以嗅探它。

【讨论】:

cookie 数据没有意义,即使有人得到它,他们也无能为力。我没有数据库或存储任何要检索的东西。我只是对一些数据使用简单的会话/cookie。我唯一可以设置的时间是它们在我的 ssl 页面上。

以上是关于跨多个域名使用 Sinatra 会话变量?的主要内容,如果未能解决你的问题,请参考以下文章

在一个进程多个数据库连接 sinatra 应用程序中使用啥 ORM?

机架会话在 Chrome 中丢失

Sinatra / Warden / Ruby - 如何确保我的用户只能使用单个会话登录?

关于跨域的理解

使用PHP预定义变量得到url地址及相关参数

跨多个 Web 应用程序使用 dao 的 shiro 会话存储