2017-01-23 210 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。