Sinatra - response.set_cookie不起作用

Cla*_*wsy 12 ruby cookies set sinatra

我需要为我的Sinatra应用程序使用cookie.如果我使用最简单的方法是有效的:

response.set_cookie('my_cookie', 'value_of_cookie')
Run Code Online (Sandbox Code Playgroud)

但我需要一些选项,如域名和过期日期,所以我试试这个:

response.set_cookie("my_cookie", {:value => 'value_of_cookie', :domain => myDomain, :path => myPath, :expires => Date.new})
Run Code Online (Sandbox Code Playgroud)

不起作用.没有cookie.我需要这么多......

请帮忙......谢谢!

fl0*_*00r 17

http://sinatra-book.gittr.com/#cookies上的文档说使用set_cookie帮助程序,但是在较新版本的Sinatra中(至少从1.2.0+开始,可能更早),你应该使用response.set_cookie来设置cookie.

response.set_cookie("my_cookie", :value => "value_of_cookie",
                    :domain => myDomain,
                    :path => myPath,
                    :expires => Date.new(2020,1,1))
cookie = request.cookies["my_cookie"]
Run Code Online (Sandbox Code Playgroud)

摘要

不要将localhost您的Cookie 设置为域,因为您需要将其设置为""或FALSE

  • 这有效:response.set_cookie('my_cookie',{:value =>'abc',:path => request.path,:expires => Time.now +(60*60*24*30)}).它会在一个月后过期.但是为什么:domain参数不起作用.:domain => request.host在我的情况下将是'localhost'.如果我添加该参数它不起作用....但为什么? (3认同)