我对这个答案也很感兴趣。我已经在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() {} );
}