我也对这个答案很感兴趣。我已经完成了我需要在 PHP 中完成的工作,但是 JavaScript 组件仍然让我望而却步。
这是我在 PHP 中的做法:
$dirty = false;
foreach(headers_list() as $header) {
if($dirty) continue; // I already know it needs to be cleaned
if(preg_match('/Set-Cookie/',$header)) $dirty = true;
}
if($dirty) {
$phpversion = explode('.',phpversion());
if($phpversion[1] >= 3) {
header_remove('Set-Cookie'); // php 5.3
} else {
header('Set-Cookie:'); // php 5.2
}
}
然后我有一些额外的代码可以在用户接受 cookie 时将其关闭。
问题是我的网站中使用了第三方插件,它们通过 javascript 操作 cookie,并且没有扫描它们以确定哪些访问 document.cookie - 他们仍然可以设置 cookie。
如果他们都使用相同的框架会很方便,所以我可能能够覆盖 setCookie 函数 - 但他们没有。
如果我可以删除或禁用 document.cookie 以使其无法访问,那就太好了...
编辑:可以防止 javascript 访问获取或设置 cookie。
document.__defineGetter__("cookie", function() { return '';} );
document.__defineSetter__("cookie", function() {} );
编辑 2:为此在 IE 中工作:
if(!document.__defineGetter__) {
Object.defineProperty(document, 'cookie', {
get: function(){return ''},
set: function(){return true},
});
} else {
document.__defineGetter__("cookie", function() { return '';} );
document.__defineSetter__("cookie", function() {} );
}