我正在尝试创建一个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;";
谢谢 -
答案 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,以便在向服务器发出请求时将其发送。