无法从javascript中删除cookie
我在一个外部站点上,我正试图通过javascript删除cookie 我在控制台中执行了以下操作:无法从javascript中删除cookie,javascript,cookies,Javascript,Cookies,我在一个外部站点上,我正试图通过javascript删除cookie 我在控制台中执行了以下操作: function deleteAllCookies() { var cookies = document.cookie.split(";"); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; var eqPos = cookie.indexOf("=");
function deleteAllCookies() {
var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++) {
var cookie = cookies[i];
var eqPos = cookie.indexOf("=");
var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT";
}
}
deleteAllCookies()
这些饼干似乎没有碰过。你知道为什么吗
注:以上代码来自stackoverflow
我也有同样的问题。我发现cookie被设置在一个空的子域下,例如cookie域是“.domain.com”,我的网站托管在“sub.domain.com” 为了修复此问题,我将cookie域添加到设置值中
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT; domain=.domain.com";
要查看cookie设置为哪个域,请在Chrome中打开开发工具->资源->cookie并查看域字段。您的cookie很可能没有被删除,因为当您设置新值时,它必须与您尝试删除的原始cookie的路径和域相匹配 换言之:
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=[something];"
“something”值需要与现有cookie设置的值一致
JS调试器可能不会向您提供路径和域的详细信息,但如果您在Firefox/Safari/IE中的Chrome->settings或类似面板中查找现有cookie的值,就会发现哪些路径和域不匹配
让我知道这是否有帮助。我正在使用浏览器书签从当前域中删除cookie,我也有同样的问题,我的问题是我也没有使用域。以下是我的bookmarklet值:
javascript: (function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";domain=." + location.host.split('.').slice(-2).join(".") +";path=/"); }); })();
请注意,我将“domain.com”替换为location.host.split('.').slice(-2).join(“.”),这样我总是可以得到没有子域名的域名,即mail.google.com将变成google.com。在设置cookie到期时,我们应该忽略subdemain(至少在我的情况下是这样的。
可能是上面的链接可以给予帮助
只需像下面那样运行JavaScript
document.execCommand("ClearAuthenticationCache")
我尝试了,但cookie被清除。我在尝试删除某些cookie时遇到类似问题。有时这会起作用:
document.cookie=name+'=;expires=Thu,1970年1月1日00:00:01 GMT;path=/;;;
…但有时却没有
在查看Chrome Inspector(应用程序选项卡->存储侧栏->Cookies)后,我注意到一些Cookies设置了不同的域。例如:
.mydoamin.com
sub.mydomain.com
因此,我的解决方案是创建一个通用函数,从所有域中删除cookie
var deleteCookie = function(name) {
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/;domain=.mydomain.com;';
document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;path=/;domain=sub.mydomain.com;';
};
对我来说,问题是我设置了
域
字段,只有在设置cookie时您对该字段进行了重写,该字段才是必需的
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"
你只能删除你正在删除的域上的cookie。你不能删除跨域cookie。发布你的cookie数据。这对我很有用:谢谢各位!我正在控制台执行此代码,我在wsj上。我在online.wsj.com上,我想cookie在域wsj.com中。我在IE和Edge中发现了这个问题。最好始终设置指向某个对象的路径,因为默认值将是设置cookie的页面。因此,如果您尝试在其他页面上使其过期,则路径将不匹配,也不会过期。在IE和Edge中,它似乎从document.cookie值中隐藏过期和路径,因此无法通过查看e值。如果需要,请将设置页的路径保存在cookie值中,以便以后可以将其拉出。或者始终附加“path=/;”设置为cookie值。然后它将从任何页面过期。此解决方案适用于我们的实例。我们的cookie不会仅使用
过期
和路径
参数进行清除,但一旦添加了域
参数,它就解决了问题。
document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/"