题
我想设置一个cookie在一个域中从另一个访问它。这是可能的?
下面是我在我的应用程序正在做的:
在的控制器,所述测试动作经由该URL来访问:
<强> http://myapp.com/account/test 强>
def test
cookies[:foo] = {
:value => 'something',
:domain => 'myapp.heroku.com'
}
end
在同一控制器中,TEST2动作经由该URL来访问:
<强> http://myapp.heroku.com/account/test2 强>
def test2
puts "foo=#{cookies[:foo]}"
end
但饼干的值[:FOO]总是空白。是否有可能从heroku.com域访问的cookie。我想设置:domain选项将允许这一点。
感谢。
解决方案
在:域选项(和一般的cookie设置域)才真正可以跨子域。即,用于app1.mysite.com和app2.mysite.com - 你可以设置cookie域.mysite.com和具有它的子域之间共享
。这就是Cookie的设计工作。 myapp.com和myapp.heroku.com是独立的域,而不是子域,所以试图设置这种方式行不通域。
有一些方法来实现真正的跨域饼干 - 但他们相当复杂。
其他提示
您不能为不同的领域做到这一点,但你可以为子域做到这一点。所以,举例来说,
域example.com
运行的应用程序可以设置cookie的subdomain.example.com
而不是exampleapp.com
。
我要补充,如果有可能设置Cookie的其他任意域,将会有大量的安全/隐私问题。
您可以通过执行中的environment.rb以下设置为您所有站点同样的Cookie:
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:session_domain => '.mydomain.com']
见这里为文档。
不隶属于 StackOverflow