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 に有効期限を設定するために使用されます。期限内であれば、Webページを開くだけで保存された 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 を転送するかどうかを指定します。
その他の拡張