W3Cschool
恭喜您成為首批注冊(cè)用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
HTTP協(xié)議是無狀態(tài)協(xié)議。但對(duì)于一個(gè)商業(yè)網(wǎng)站,它需要保持不同的頁面間的會(huì)話信息。
如用戶在網(wǎng)站注冊(cè)過程中需要跳轉(zhuǎn)頁面,但又要保證之前填寫的信息部丟失。
這種情況下 Cookie 很好的幫我們解決了問題。
Cookies集合是附屬于Response對(duì)象及Request對(duì)象的數(shù)據(jù)集合,使用時(shí)需要在前面加上Response或Request。
用于給客戶機(jī)發(fā)送Cookies的語法通常為:
當(dāng)給不存在的Cookies集合設(shè)置時(shí),就會(huì)在客戶機(jī)創(chuàng)建,如果該Cookies己存在,則會(huì)被代替。由于Cookies是作為HTTP傳輸?shù)念^信息的一部分發(fā)給客戶機(jī)的,所以向客戶機(jī)發(fā)送Cookies的代碼一般放在發(fā)送給瀏覽器的HTML文件的標(biāo)記之前。
如果用戶要讀取Cookies,則必須使用Request對(duì)象的Cookies集合,其使用方法是: 需要注意的是,只有在服務(wù)器未被下載任何數(shù)據(jù)給瀏覽器前,瀏覽器才能與Server進(jìn)行Cookies集合的數(shù)據(jù)交換,一旦瀏覽器開始接收Server所下載的數(shù)據(jù),Cookies的數(shù)據(jù)交換則停止,為了避免錯(cuò)誤,要在程序和前面加上response.Buffer=True。
你可以創(chuàng)建一個(gè)名為 cookie 的對(duì)象并存儲(chǔ)文本信息,將該信息發(fā)送至瀏覽器,調(diào)用 CGI.out 設(shè)置cookie的頭部:
#!/usr/bin/ruby require "cgi" cgi = CGI.new("html4") cookie = CGI::Cookie.new('name' => 'mycookie', 'value' => 'Zara Ali', 'expires' => Time.now + 3600) cgi.out('cookie' => cookie) do cgi.head + cgi.body { "Cookie stored" } end
接下來我們回到這個(gè)頁面,并查找cookie值,如下所示:
#!/usr/bin/ruby require "cgi" cgi = CGI.new("html4") cookie = cgi.cookies['mycookie'] cgi.out('cookie' => cookie) do cgi.head + cgi.body { cookie[0] } end
CGI::Cookie對(duì)象實(shí)例化時(shí)包含以下參數(shù):
參數(shù) | 描述 |
---|---|
name | 規(guī)定 cookie 的名稱。 |
value | 規(guī)定 cookie 的值。 |
expire | 規(guī)定 cookie 的有效期。 |
path | 規(guī)定 cookie 的服務(wù)器路徑。 |
domain | 規(guī)定 cookie 的域名。 |
secure | 規(guī)定是否通過安全的 HTTPS 連接來傳輸 cookie。 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: