跨多个域名使用 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?