2017-01-23 111 views
0

所以事情是,此代码的工作非常好:如何设置域响应[“设置Cookie”]

response["set-cookie"]="cookieName=#{@cookieValue.split.join}" 

我可以设置一个cookie,用正确的名称和含量(是的,分裂.join也是正确的)。但我也需要设置一个域名。

我的网站的推移域这样的:mysubdomain.mywebsite.com

但我需要设置域cookie的mywebsite.com。

如果我添加像这样的饼干是不存在:

response["set-cookie"]="cookieName=#{@cookieValue.split.join};Path=/;Domain=mywebsite.com" 

我需要设置一个cookie与响应[“设置Cookie”],因为这是对我的作品的唯一方法长串。我尝试了每种方法,但我需要使用这个方法。

所以问题是:如何通过使用response [“set-cookie”]来设置cookie来设置cookie?

回答

0

那么,在这里更喜欢使用初始化器。创建一个新的文件config/initializers/cookies.rb,并把下面的代码有:

options = { 
    key: 'your_cookie_name', 
    domain: 'your_domain' 
} 

Rails.application.config.session_store :cookie_store, options 

这将使您的Cookie相关的配置在一个地方,虽然它不是强制性的。您仍然可以使用domain选项为您的cookie指定域名。

+0

谢谢,但请阅读问题。我不想为我的主要cookie设置域。只为那一个。我需要使用response [“set-cookie”] – Boomerange

+0

就像'response'一样,您可以访问'cookies'对象来设置响应cookie。 '[在这里阅读更多]](http://api.rubyonrails.org/classes/ActionDispatch/Cookies.html)。 – 31piy

+0

请再读一遍。我知道cookie [“cookieName”等等。我必须使用response [“set-cookie”] – Boomerange

0

我无法做到这一点。我认为Rails有一些安全机制可以防止这种情况发生(但从子域设置cookie的域名是正确的)。

但我可以通过JavaScript来做到这一点:

document.cookie = "#{@cookieName}=#{@cookieContent};domain=yourdomain.com" 

一个代码行,完美的作品。只要把它放在你的视图中或分开文件并在application.js中需要它我在子域上,但最后可以为父域设置cookie。