25

我正在尝试创建一个启用 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;";

谢谢 -

4

1 回答 1

25

您无法在 JavaScript 中访问 HttpOnly cookie。

以下引文是从维基百科材料中借用的

大多数现代浏览器都支持 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,更改$isHttpOnlytrue,重新加载页面,您将看到一个空警报。但与此同时,浏览器存储 cookie 以在向服务器请求期间将其发送。

于 2012-06-19T09:59:16.250 回答