程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Ruby >> Ruby CGI Cookie

Ruby CGI Cookie

編輯:Ruby

Ruby CGI Cookie

HTTP協議是無狀態協議。但對於一個商業網站,它需要保持不同的頁面間的會話信息。

如用戶在網站注冊過程中需要跳轉頁面,但又要保證之前填寫的信息不丟失。

這種情況下 Cookie 很好的幫我們解決了問題。


Cookie 是如何工作的?

幾乎所有的網站設計者在進行網站設計時都使用了Cookie,因為他們都想給浏覽網站的用戶提供一個更友好的、人文化的浏覽環境,同時也能更加准確地收集訪問者的信息。

寫入和讀取

Cookies集合是附屬於Response對象及Request對象的數據集合,使用時需要在前面加上Response或Request。

用於給客戶機發送Cookies的語法通常為:

當給不存在的Cookies集合設置時,就會在客戶機創建,如果該Cookies己存在,則會被代替。由於Cookies是作為HTTP傳輸的頭信息的一部分發給客戶機的,所以向客戶機發送Cookies的代碼一般放在發送給浏覽器的HTML文件的標記之前。

如果用戶要讀取Cookies,則必須使用Request對象的Cookies集合,其使用方法是: 需要注意的是,只有在服務器未被下載任何數據給浏覽器前,浏覽器才能與Server進行Cookies集合的數據交換,一旦浏覽器開始接收Server所下載的數據,Cookies的數據交換則停止,為了避免錯誤,要在程序和前面加上response.Buffer=True。

集合的屬性

  • 1.Expires屬性:此屬性用來給Cookies設置一個期限,在期限內只要打開網頁就可以調用被保存的Cookies,如果過了此期限Cookies就自動被刪除。如: 設定Cookies的有效期到2004年4月1日,到時將自動刪除。如果一個Cookies沒有設定有效期,則其生命周期從打開浏覽器開始,到關閉浏覽器結束,每次運行後生命周期將結束,下次運行將重新開始。
  • 2.Domain屬性:這個屬性定義了Cookies傳送數據的唯一性。若只將某Cookies傳送給_blank">搜狐主頁時,則可使用如下代碼:
  • 3.Path屬性:定義了Cookies只發給指定的路徑請求,如果Path屬性沒有被設置,則使用應用軟件的缺省路徑。
  • 4.Secure屬性:指定Cookies能否被用戶讀取。
  • 5、Name=Value : Cookies是以鍵值對的形式進行設置和檢索的。

Ruby 中處理Cookies

你可以創建一個名為 cookie 的對象並存儲文本信息,將該信息發送至浏覽器,調用 CGI.out 設置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

接下來我們回到這個頁面,並查找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對象實例化時包含以下參數:

參數 描述 name 規定 cookie 的名稱。 value 規定 cookie 的值。 expire 規定 cookie 的有效期。 path 規定 cookie 的服務器路徑。 domain 規定 cookie 的域名。 secure 規定是否通過安全的 HTTPS 連接來傳輸 cookie。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved