最近の更新

2011-07-05
2011-04-24
2011-04-23

Menu

Wikiガイド

クッキーシミュレート機能

!Cookieを受け付けない(無視する)端末のために!Cookieをシミュレートします。本機能を有効にするためにはChxjConvertRuleディレクティブを使用する必要 があります。ChxjConvertRuleディレクティブの第2パラメータにCookieOnを指定します。


# Cookieシミュレート機能を有効にする例:
ChxjConvertRule "^/chxj.+$" "EngineOn,CookieOn" "NONE"

One-Time ID

Cookieシミュレートでは、aタグ、imgタグ、formタグのURL部、LocationヘッダにOne-Time IDを埋め込むことで実現します。 そのため、ユーザがブラウザの戻るボタン等で戻った場合は!Cookieを取得できなくなります。 !One-Time IDを使用する必要が無い場合、または!One-Time IDを使用したくない場合には、 CookieLazyModeを使用することで毎回同一IDを発行させることができます。

Cookieの保存場所

Cookieの内容はサーバ側に保存されます。 保存先にはdbm、memcached、mysqlが選択できます。
注意) memcached、mysqlを保存先に選択する場合はconfigure時にそれぞれ指定する必要があります
保存先の指定にはChxjCookieStoreTypeディレクティブを使用します。ChxjCookieStoreTypeが指定されない場合はdbmが選択されます。 DBMの代わりに!MySQLやmemcachedを指定することもできます。その際は、ChxjCookieDirは指定する必要はありません。

Cookieの保存先をMySQLにする

保存先をMySQLにするには、configure時に!MySQL COOKIE機能を有効にして、コンパイルする必要があります。
(詳細はconfigure時のオプションを参照してください。)

MySQLを使用する場合にはChxjCookieStoreTypeディレクティブのほかに、以下のディレクティブを指定する必要もあります。

  • ChxjCookieMysqlHostディレクティブ
  • ChxjCookieMysqlPortディレクティブ
  • ChxjCookieMysqlDatabaseディレクティブ
  • ChxjCookieMysqlUsernameディレクティブ
  • ChxjCookieMysqlPasswordディレクティブ
  • ChxjCookieMysqlSocketPathディレクティブ
  • ChxjCookieMysqlCharsetディレクティブ
  • ChxjCookieMysqlTablenameディレクティブ

ディレクティブの詳細はディレクティブを参照してください。

Cookieの保存先をmemcachedにする

保存先をmemcachedにするには、configure時にMEMCACHE COOKIE機能を有効にして、コンパイルする必要があります。
(詳細はconfigure時のオプションを参照してください。)

memcachedを使用する場合にはChxjCookieStoreTypeディレクティブの他に以下のディレクティブを指定する必要もあります。

  • ChxjCookieMemcacheHostディレクティブ
  • ChxjCookieMemcachePortディレクティブ



ディレクティブの詳細はディレクティブを参照してください。

Cookieの保持期間

ChxjCookieTimeoutディレクティブで保持期間を指定することができます。 指定しなかった場合は1800秒でサーバに保存されている!Cookieは削除されます。

ディレクティブの詳細はディレクティブを参照してください。

CookieLazyMode

ChxjCookieLazyModeディレクティブで"true"を指定するとOne-Time IDを使用しないようにすることができます。 !Cookie用のIDは毎回同一のIDが割り振られます。

ディレクティブの詳細はディレクティブを参照してください。

ChxjAllowedCookieDomain(0.12.34以降)

クッキーをシミュレートするために、aタグ、formのaction属性、Locationヘッダに_chxj_ccパラメータを付加しますが、 _chxj_ccパラメータを付加する際、付加するURLが外部サーバあてで無い場合にのみ付加するようにしています。 外部サーバかどうかはHostヘッダとaタグなどのURLを比較しています。Hostヘッダではなく、特定のドメインで比較したい 場合にChxjAllowedCookieDomainディレクティブを使用することができます。
例)
a.hoge.net、b.hoge.net、c.foo.netと3つのサーバがあり、 ChxjAllowedCookieDomainディレクティブで"hoge.net"と指定する場合

ChxjAllowedCookieDomain "hoge.net"
この場合、a.hoge.net、b.hoge.netあてのaタグ、formのaction、Locationヘッダに_chxj_ccを付加します。 c.foo.netには付加しません。
また、
ChxjAllowedCookieDomain "a.hoge.net"
と指定した場合、a.hoge.netあてのaタグ、formのaction、Locationヘッダに_chxj_ccを付加します。 b.hoge.net、c.foo.netには付加しません。
ChxjAllowedCookieDomain ".net"
と指定した場合にはa.hoge.net、b.hoge.net、c.foo.netが付加対象になります。
ディレクティブの詳細はディレクティブを参照してください。

CookieOnlyMode(0.12.38以降)

HTML変換を行わず、Cookieシミュレータのみ機能するよう指定することができます。

ChxjConvertRule "^/chxj/cookieonly/.*$" "CookieOnly" "CP932"
などのように"CookieOnly"をChxjConvertRuleディレクティブで指定します。