.htaccess で特定の cookie がある場合、かつ特定のサイトからのアクセスである場合以外は拒否する方法を紹介します。
例えば、 token
という名前で foobar
という値の Cookie がセットされていて、なおかつ https://example.com
からのアクセスの場合だけ表示したいコンテンツがあるとします。
そういったときは .htaccess に下記のように書きます。ただし、Apache 2.4 の場合は別の書き方もできるようです。
SetEnvIf Cookie token=fobar mytoken
SetEnvIf Referer "^https://example\.com" mysite
SetEnvIf mytoken "^$" !mysite
SetEnvIf mysite "1" member
Order Deny,Allow
Deny from all
Allow from env=member
以下のような JavaScript を、アクセス制限したいリンクのあるページに貼り付ければ良いと思います。
function setCookie (key, val, days, path) {
var cookie = encodeURIComponent(key) + '=' + encodeURIComponent(val);
if (days != null) {
var expires = new Date();
expires.setDate(expires.getDate() + days);
cookie += ';expires=' + expires.toGMTString();
}
cookie += (path != null) ? '; path=' + path + ';': '; path=/;';
document.cookie = cookie;
}
setCookie('token', 'foobar', 10)
以上です。