English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby CGI Cookie

HTTPプロトコルは無状態プロトコルです。しかし、ビジネスウェブサイトの場合、異なるページ間のセッション情報を保持する必要があります。

ユーザーがウェブサイトの登録プロセス中にページを遷移する必要があるが、前に入力した情報が失われないようにする必要があります。

この場合、Cookieは私たちに問題を解決してくれました。

Cookieはどのように機能するのでしょうか?

ほとんどのウェブサイトデザイナーは、ウェブサイトのデザインを行う際にCookieを使用しており、それはウェブサイトを訪れるユーザーによりフレンドリーで人間的なブラウジング環境を提供し、訪問者情報をより正確に収集できるようにするためです。

書き込みと読み取り

CookiesコレクションはResponseオブジェクトやRequestオブジェクトに属するデータコレクションであり、使用する際にはResponseまたはRequestの前に付ける必要があります。

クライアント機にCookiesを送信するための文法は通常以下のようになります:

存在しないCookiesコレクションに設定すると、クライアント機に作成されます。既に存在する場合、置き換えられます。CookiesはHTTPトランスポートのヘッダー情報の一部としてクライアント機に送信されるため、クライアント機にCookiesを送信するコードは、ブラウザに送信されるHTMLファイルのタグの前に配置されることが一般的です。

ユーザーがCookiesを読み取る場合、RequestオブジェクトのCookiesコレクションを使用する必要があります。その使用方法は以下の通りです:注意点として、サーバーがブラウザにデータをダウンロードする前にのみ、ブラウザがサーバーとCookiesコレクションのデータ交換を行うことができます。ブラウザがサーバーからダウンロードしたデータを開始すると、Cookiesのデータ交換は停止します。エラーを避けるために、プログラムの前にresponse.Buffer=Trueを追加します。

コレクションの属性

  • 1.Expires属性:この属性は、期限内であれば、開いたページで保存されたCookiesを呼び出すことができるようにCookiesに期限を設定します。期限が過ぎると、Cookiesは自動的に削除されます。例えば: 設定Cookiesの有効期限を2004年4月1日、その時点で自動的に削除されます。Cookiesに有効期限が設定されていない場合、そのライフサイクルはブラウザを開始してから閉じるまで、各実行ごとに終了し、次の実行では再び開始します。

  • 2.Domain属性:この属性は、Cookiesがデータを送信するユニークな性質を定義します。_blank">搜狐のホームページにのみCookiesを送信する場合、以下のコードを使用できます:

  • 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" }
終了

次にこのページに戻り、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] }
終了

CGI::Cookie オブジェクトが初期化される際に以下のパラメータを含みます:

パラメータ説明
namecookie の名前を指定します。
valuecookie の値を指定します。
expirecookie の有効期限を指定します。
pathcookie のサーバーパスを指定します。
domaincookie のドメインを指定します。
securecookie を安全な HTTPS 連接を通じて転送するかどうかを指定します。