我想设置一个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']

这里为文档。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top