如何在响应中设置域名[“set-cookie”]

时间:2017-01-23 03:40:40

标签: ruby-on-rails ruby cookies

所以事实是,这段代码非常有效:

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

我可以设置一个具有正确名称和内容的cookie(是的,split.join也是正确的)。但我也需要设置域名。

我的网站就是这样的域名: mysubdomain.mywebsite.com

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

如果我像这样添加它,那么cookie就不存在了:

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

我需要设置一个带有response [“set-cookie”]的cookie,因为它是唯一适用于我的长字符串的方法。我尝试了所有方法,但我需要使用这个方法。

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

2 个答案:

答案 0 :(得分:0)

嗯,更喜欢在这里使用初始化程序。创建一个新文件config/initializers/cookies.rb,并将以下代码放在那里:

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

Rails.application.config.session_store :cookie_store, options

这会使您在一个地方进行与Cookie相关的配置,但这不是强制性的。您仍然可以使用domain选项为Cookie指定域名。

答案 1 :(得分:0)

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

但我可以通过javascript实现:

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

一行代码,完美运行。只需将它放在您的视图或单独的文件中,并在application.js中需要它我在子域,但最后可以为父域设置cookie。