ASP.NETでCookieが有効になっているかどうかを判断する最良の方法は?

StackOverflow https://stackoverflow.com/questions/210321

  •  03-07-2019
  •  | 
  •  

質問

ユーザーのブラウザーでASP.NETでCookieが有効になっているかどうかを判断するための最良の方法は何ですか

役に立ちましたか?

解決

Cookieを設定し、チェックページへのリダイレクトを強制して、Cookieを確認します。

または、まだ設定されていない場合は、ページロードごとにCookieを設定します。たとえば、Cookieを有効にする必要があるというログインを試みるときにメッセージを表示するためにCookieがサポートされているかどうかを確認することを想定しています。ゲストCookieがまだ設定されていない場合、ログインCookieをゲストユーザーのデフォルト値に設定します。次に、ログインページでユーザーCookieを確認し、設定されていない場合はメッセージを表示します。

他のヒント

@Mattewが正しい方法を見つける唯一の方法は、Cookieを設定し、リダイレクトしてから確認することです。 これをページロードイベントに含めることができることを確認するC#関数を次に示します。

private bool cookiesAreEnabled()
{
bool cookieEnabled = false;

if(Request.Browser.Cookies)
{
   //Your Browser supports cookies 
   if (Request.QueryString["TestingCookie"] == null)
   {
     //not testing the cookie so create it
     HttpCookie cookie = new HttpCookie("CookieTest","");
     Response.Cookies.Add(cookie);

     //redirect to same page because the cookie will be written to the client computer, 
     //only upon sending the response back from the server 
     Response.Redirect("Default.aspx?TestingCookie=1")
   }
   else
   {
     //let's check if Cookies are enabled
      if(Request.Cookies["CookieTest"] == null)
      {
        //Cookies are disabled
      }
      else
      {
        //Cookies are enabled
        cookieEnabled = true;
      }   
   }

}
else
{
  // Your Browser does not support cookies
}
return cookieEnabled;
}


この方法でもjavascriptで実行できます:

function cookiesAreEnabled()
{   
    var cookieEnabled = (navigator.cookieEnabled) ? 1 : 0;  

    if (typeof navigator.cookieEnabled == "undefined" && cookieEnabled == 0){   
    document.cookie="testcookie";   
    cookieEnabled = (document.cookie.indexOf("test­cookie") != -1) ? 1 : 0; 
    }   

  return cookieEnabled == 1;
}

Cookieを作成してリダイレクトし、Cookieを読み取れるかどうかを確認します。

さて、Global.ASAXセッションの開始時にCookieを保存し、ページでそれを読むことができると思います。その最良の方法ではありませんか?

medaのc#関数は機能しますが、行を変更する必要があります:

HttpCookie cookie = new HttpCookie(""、"");

to

HttpCookie cookie = new HttpCookie(" CookieTest"、" CookieTest");

本質的にmedaと同じソリューションですが、VB.NETで:

Private Function IsCookieDisabled() As Boolean
    Dim currentUrl As String = Request.RawUrl
    If Request.Browser.Cookies Then
        'Your Browser supports cookies 
        If Request.QueryString("cc") Is Nothing Then
            'not testing the cookie so create it
            Dim c As HttpCookie = New HttpCookie("SupportCookies", "true")
            Response.Cookies.Add(c)
            If currentUrl.IndexOf("?") > 0 Then
                currentUrl = currentUrl + "&cc=true"
            Else
                currentUrl = currentUrl + "?cc=true"
            End If
            Response.Redirect(currentUrl)
        Else
            'let's check if Cookies are enabled
            If Request.Cookies("SupportCookies") Is Nothing Then
                'Cookies are disabled
                Return True
            Else
                'Cookies are enabled
                Return False
            End If
        End If
    Else
        Return True
    End If
End Function

Request.Browser.Cookies の値も確認できます。 trueの場合、ブラウザはCookieをサポートします。

これが最良の方法です

から取得 http://www.eggheadcafe.com /community/aspnet/7/42769/cookies-enabled-or-not-.aspx

function cc()
{
 /* check for a cookie */
  if (document.cookie == "") 
  {
    /* if a cookie is not found - alert user -
     change cookieexists field value to false */
    alert("COOKIES need to be enabled!");

    /* If the user has Cookies disabled an alert will let him know 
        that cookies need to be enabled to log on.*/ 

    document.Form1.cookieexists.value ="false"  
  } else {
   /* this sets the value to true and nothing else will happen,
       the user will be able to log on*/
    document.Form1.cookieexists.value ="true"
  }
}

Venkat Kに感謝

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top