web-dev-qa-db-ja.com

JavaScriptでCookieのHttpOnlyフラグを設定するにはどうすればよいですか?

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;";

ありがとう-

24
user617136

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を保存します。

24
Yevhen Pavliuk