为什么我无法使用Cookie.js删除cookie?

时间:2016-05-25 21:12:58

标签: javascript cookies js-cookie

我正在使用Jscookie.js 我在服务器的响应中传递了一个cookie(在标题上)。 我可以看到使用cookiemanager +客户端收到cookie。我的JavaScript尝试删除cookie,但cookie未被删除。

奇怪的是,当我在本地运行项目时,cookie被删除成功,但是当我部署到我的测试服务器时,cookie不会被删除。

我的服务器代码:

var DownloadToken = request.Headers.GetCookies(UploadToken").FirstOrDefault();
                if (DownloadToken != null)
                {
                    var cookie = new CookieHeaderValue("DownloadToken", DownloadToken["UploadToken"].Value.ToString());  //create a new cookie
                    cookie.Expires = System.DateTime.Now.AddMinutes(6.0); //expire cookie in 6 minutes
                    cookie.Domain = request.RequestUri.Host == "localhost" ? null : request.RequestUri.Host;
                    cookie.Path = "/";
                    response.Headers.AddCookies(new CookieHeaderValue[] {cookie});
                }

return response;

我的客户代码:

Cookies.remove('DownloadToken'); //clears this cookie value for fileDownloadToken

1 个答案:

答案 0 :(得分:0)

在服务器上我的cookie.domain正在被设置,所以当我尝试在客户端传递它之后删除cookie时它将无法工作,因为为了删除cookie我必须指定域。

例如,我更新了创建cookie的服务器代码,因此它添加了域。还更新了客户端代码,用于在删除cooke时删除cookie以指定域:

在服务器上:

var DownloadToken = request.Headers.GetCookies(UploadToken").FirstOrDefault();
                if (DownloadToken != null)
                {
                    var cookie = new CookieHeaderValue("DownloadToken", DownloadToken["UploadToken"].Value.ToString());  //create a new cookie
                    cookie.Expires = System.DateTime.Now.AddMinutes(6.0); //expire cookie in 6 minutes
                    cookie.Domain = request.RequestUri.Host == "localhost" ? null : ".mywebsite.com";
                    cookie.Path = "/";
                    response.Headers.AddCookies(new CookieHeaderValue[] {cookie});
                }

return response;

并在客户端:

Cookies.remove('DownloadToken', { domain: '.mywebsite.com' });