2016-09-03 75 views
0

我正在開發一個使用Sinatra和Ruby的Web應用程序。我需要設置一個可從所有子域訪問的cookie。我原來的代碼是這樣的:如何在Sinatra中設置Cookie

@language = 'en-US' 
cookies[:USER_LANGUAGE] = @language 

這產生預期的效果(例如設置cookie「USER_LANGUAGE」等於「EN-US」

然而,那不是所有子域訪問細算。 How to set a cookie on a separate domain in Rails和其他類似的問題,我已經試過這樣:

@language = 'en-US' 
cookies[:USER_LANGUAGE] = { 
    :value => @language, 
    :domain => '.example.com' 
} 

當我檢查的Cookie數據,它被設置完全錯誤的cookie的值是括號內的一切,和域仍然只有example.com(。而不是.example.com

這裏是產生的價值:

%7B%3Avalue%3D%3E%22en-US%22%2C+%3Adomain%3D%3E%22.example.com%22%7D

回答

2

如果你希望所有的餅乾是從所有子域名訪問,您可以設置cookie的選項爲您的應用:

set :cookie_options, :domain => '.example.com' 

如果只是需要它在一個cookie上,您可以執行此操作(而不是使用cookies對象):

response.set_cookie(:USER_LANGUAGE, :value => @language, :domain => '.example.com') 
+0

謝謝。使用'response'方法完美運作。 –