HttpOnlyフラグを有効にしてCookieを作成しようとしています。
Javaと.Netでそれを行う方法についてのリソースは多すぎるようですが、JavaScriptで行う必要があります。
これが私の(現在失敗している)関数です
createCookie = function(name,value,days) {
if (days) {
var date = new Date();
date.setTime(date.getTime()+(days*24*60*60*1000));
var expires = "; expires="+date.toGMTString();
}
else var expires = "";
document.cookie = name+"="+value+expires+"; domain=my.domain.com; path=/; HttpOnly;";
ありがとう-
JavaScriptでHttpOnly Cookieにアクセスすることはできません。
次の引用は Wikipediaの資料 から借用したものです。
HttpOnly Cookieは、最新のほとんどのブラウザでサポートされています。サポートされているブラウザでは、HttpOnlyセッションCookieはHTTP(またはHTTPS)リクエストを送信するときにのみ使用されるため、他の非HTTP API(JavaScriptなど)からのアクセスを制限します。
つまり、HttpOnly Cookieはサーバー側でのみ使用されるようになっています。
PHPで例を書きました:
<?php
$name = 'foo';
$value = 'bar';
$expirationTime = 0; // Session cookie.
$path = '/';
$domain = 'localhost';
$isSecure = false;
$isHttpOnly = false;
setcookie($name, $value, $expirationTime, $path, $domain, $isSecure, $isHttpOnly);
?>
<script>
alert(document.cookie);
</script>
警告foo=bar
。
Cookieを削除し、$isHttpOnly
からtrue
へ、ページをリロードすると、空のアラートが表示されます。ただし、同時にブラウザは、サーバーへのリクエスト中に送信するCookieを保存します。