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 オブジェクトは次のパラメータでインスタンス化されます:
parameter | description |
---|---|
name | Cookieの名前を指定します。 |
value | Cookieの値を指定します。 |
expire | Cookieの有効期間を指定します。 |
path | Cookieのサーバーパスを指定します。 |
domain | Cookie のドメイン名を指定します。 |
secure | Cookie が安全な HTTPS 接続を介して送信されるかどうかを指定します。 |