2011-02-15 145 views
18

我试图创建一个cookie,启用HttpOnly标志。如何使用javascript设置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;"; 

谢谢 -

+4

是不是HttpOnly防止Javascript访问它的全部重点?我会质疑用例。 – 2011-02-15 02:25:39

回答

21

你不能在JavaScript中访问的HttpOnly的cookie。

以下报价是从the Wikipedia material借:

中HTTPOnly Cookie由最先进的浏览器支持。在受支持的浏览器上,仅在传输HTTP(或HTTPS)请求时才会使用HttpOnly会话cookie,因此限制从其他非HTTP API(例如JavaScript)的访问。

换句话说,HttpOnly cookies仅用于服务器端。

我在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以在请求期间将其发送到服务器。

相关问题