如何使用javascript设置cookie的HttpOnly标志?

时间:2011-02-15 02:23:58

标签: javascript cookies httponly

我正在尝试创建一个cookie,并启用了HttpOnly标志。

虽然在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;";

谢谢 -

1 个答案:

答案 0 :(得分:23)

您无法在JavaScript中访问HttpOnly cookie。

以下引文来自the Wikipedia material

  

大多数现代浏览器都支持HttpOnly cookie。在支持的浏览器上,只有在传输HTTP(或HTTPS)请求时才会使用HttpOnly会话cookie,因此限制从其他非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,以便在向服务器发出请求时将其发送。