Ruby CGI クッキー


HTTP プロトコルはステートレス プロトコルです。ただし、商用 Web サイトの場合は、異なるページ間のセッション情報を維持する必要があります。

Web サイトの登録プロセス中にユーザーがページにジャンプする必要があるが、以前に入力した情報が失われないようにする必要がある場合。

この場合、Cookie が問題をうまく解決するのに役立ちました。


クッキーはどのように機能しますか?

ほぼすべてのウェブサイトデザイナーは、ウェブサイトを閲覧するユーザーに、よりフレンドリーで人間味あふれる閲覧環境を提供し、同時に訪問者情報をより正確に収集できるようにするため、ウェブサイトをデザインする際にクッキーを使用します。

書き込みと読み取り

Cookiesコレクションは、ResponseオブジェクトとRequestオブジェクトに付属するデータコレクションです。使用する場合は、先頭にResponseまたはRequestを追加する必要があります。

クライアントに Cookie を送信するために使用される構文は通常次のとおりです。

存在しない Cookie のセットを設定する場合、Cookie が既に存在する場合は、クライアント上で作成されます。 CookieはHTTP通信のヘッダ情報の一部としてクライアントに送信されるため、ブラウザに送信するHTMLファイルのタグの前に、クライアントにCookieを送信するためのコードが記述されるのが一般的です。

ユーザーが Cookie を読み取りたい場合は、Request オブジェクトの Cookie コレクションを使用する必要があります。使用方法は次のとおりです。サーバーがブラウザーにデータをダウンロードする前にのみ、ブラウザーがサーバーで Cookie を収集できることに注意してください。データ交換では、ブラウザがサーバーによってダウンロードされたデータの受信を開始すると、Cookie のデータ交換が停止します。エラーを避けるために、response.Buffer=True をプログラムの前に追加する必要があります。

コレクションの属性

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

  • 2.ドメイン属性: この属性は、Cookie によって送信されるデータの一意性を定義します。特定の Cookie を _blank"> Sohu ホームページにのみ送信する場合は、次のコードを使用できます:

  • 3.Path 属性: は、Cookie が指定されたパス要求にのみ送信されることを定義します。Path 属性が指定されていない場合は、 set 、アプリケーション ソフトウェアのデフォルトのパスが使用されます。

  • 4.Secure 属性: ユーザーが Cookie を読み取ることができるかどうかを指定します。

  • 5. Cookie はキーの形式です。 -値のペアを設定および取得します。


Ruby での Cookie の処理

cookie という名前のオブジェクトを作成してテキスト情報を保存し、CGI.out を呼び出して Cookie ヘッダーを設定できます。

次にこのページに戻り、以下に示すように 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

CGI::Cookie オブジェクトは次のパラメータでインスタンス化されます:

parameterdescription
name Cookieの名前を指定します。
value Cookieの値を指定します。
expire Cookieの有効期間を指定します。
path Cookieのサーバーパスを指定します。
domain Cookie のドメイン名を指定します。
secure Cookie が安全な HTTPS 接続を介して送信されるかどうかを指定します。