3

私はCookieを使用していて、JavaScriptを使用して作成しましたが、プロセスの完了後にC#コードビハインドファイルを使用してそのCookieを期限切れにしようとすると、指定されたCookieが見つかりませんか?

これの理由は何でしょうか?JavaScriptで作成されたCookieは、C#を使用してアクセス/表示できないと思います...?本当??

これがJSでCookieを作成するための私のコードです

var expiryDate = new Date();
expiryDate.setTime(expiryDate.setDate(expiryDate.getDate() + 1)); // 365 days
document.cookie = "ReferedCookie=" + "clientId=" + UserGuid + "&productId=" + productId + "&Token=" + token + ";" + "expires=" + expiryDate.toGMTString() + ";";

これがCookieを見つけて期限切れにするための私のC#コードです

public void DeleteCookie(string Name) 
{
    if (System.Web.HttpContext.Current.Request.Cookies["ReferedCookie"] != null)
    {
        HttpCookie myCookie = new HttpCookie(Name);
        myCookie.Expires = DateTime.Now.AddDays(-5d);
        System.Web.HttpContext.Current.Response.Cookies.Add(myCookie);
    }        
}

前もって感謝します。

4

3 に答える 3

5

問題はPathCookieのプロパティにある可能性があります。

Javascriptを使用してCookieを設定する場合、Cookieのデフォルトのパスは、Cookieを設定するページの場所に基づきます。

そのCookieを期限切れにするには、同じパスを指定する必要があります。したがって、ページがある場合:

http://test.foo.com/somepath/default.asxp

質問で使用したJavaScriptコードを使用して、このページにCookieを設定すると、Cookieのデフォルトのパスは次のようになります。

/somepath/

これは、ブラウザがそのパスの下にあるすべてのページにこのCookieを送信することを意味します。そのパス外のページには送信されません。

サーバーからこのCookieを期限切れにするには、Cookieのパスを指定する必要があります。

HttpCookie myCookie = new HttpCookie(Name);   
myCookie.Expires = DateTime.Now.AddDays(-5d);   
myCookie.Path = "/somepath/";   
System.Web.HttpContext.Current.Response.Cookies.Add(myCookie);   

または、Cookieを最初に設定するときにパスを指定する必要があります(たとえば)/

document.cookie = "ReferedCookie=" + "clientId=" + UserGuid + "&productId=" + productId + "&Token=" + token + ";" + "expires=" + expiryDate.toGMTString() + ";path=/";

次に、同じパスで期限切れにします。

于 2012-08-29T13:02:03.800 に答える
0
DeleteCookie("ReferedCookie");


public void DeleteCookie(string Name) 
{
    if (System.Web.HttpContext.Current.Request.Cookies[Name] != null)
    {
        HttpCookie myCookie = new HttpCookie(Name);
        myCookie.Expires = DateTime.Now.AddDays(-5d);
        System.Web.HttpContext.Current.Response.Cookies.Add(myCookie);
    }        
}
于 2012-08-29T11:23:29.733 に答える
0

エラーの可能性を最小限に抑えるために、これに関数を使用すると便利です。

function set_cookie(name, value, expires, path, domain, secure)
{
  var cookie_string = name + "=" + escape ( value );

  if(expires)
  {
    cookie_string += "; expires=" + expires.toGMTString();
  }

  if(path)
        cookie_string += "; path=" + escape ( path );

  if(domain)
        cookie_string += "; domain=" + escape ( domain );

  if(secure)
        cookie_string += "; secure";

  document.cookie = cookie_string;
}

そして、あなたの場合、次のように呼び出します:

var value = "clientId=" + UserGuid + "&productId=" + productId + "&Token=" + token;
var expiryDate = new Date();
expiryDate.setTime(expiryDate.setDate(expiryDate.getDate() + 1)); // 365 days

set_cookie("ReferedCookie", value, expiryDate);
于 2012-08-29T11:24:21.927 に答える