0

私は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
4

1 に答える 1

0

サーバー上で cookie.domain が設定されていたので、渡された後にクライアントで Cookie を削除しようとすると、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 : ".mywebsite.com";
                    cookie.Path = "/";
                    response.Headers.AddCookies(new CookieHeaderValue[] {cookie});
                }

return response;

そしてクライアント上で:

Cookies.remove('DownloadToken', { domain: '.mywebsite.com' });
于 2016-05-26T13:23:38.150 に答える