Domanda

Qual è il metodo migliore per determinare se un browser degli utenti ha i cookie abilitati in ASP.NET

È stato utile?

Soluzione

Imposta un cookie, imponi un reindirizzamento su qualche pagina di controllo e controlla il cookie.

O imposta un cookie su ogni pageload, se non è già impostato. Ad esempio, suppongo che questo sia per verificare se i cookie sono supportati per visualizzare un messaggio quando tentano di accedere che devono abilitare i cookie. Imposta il tuo cookie di accesso su un valore predefinito per gli utenti guest se non hanno ancora impostato il cookie. Quindi sulla tua pagina di accesso, controlla il cookie dell'utente e, se non è impostato, visualizza il tuo messaggio.

Altri suggerimenti

@Mattew ha ragione, l'unico modo per scoprirlo è impostare un cookie, reindirizzare, quindi controllarlo. Ecco una funzione C # per preformare che controlla che tu possa inserirlo nell'evento di caricamento della pagina:

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;
}


Puoi farlo anche in JavaScript, in questo modo:

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;
}

Scrivi un cookie, reindirizza, vedi se riesci a leggere il cookie.

Beh, penso che se possiamo salvare i cookie nella sessione Global.ASAX, iniziare e leggerlo a pagina .. non è il modo migliore?

La funzione c # di meda funziona anche se devi cambiare la linea:

Cookie HttpCookie = nuovo HttpCookie (" ", " ");

a

Cookie HttpCookie = nuovo HttpCookie (" CookieTest ", " CookieTest ");

Essenzialmente la stessa soluzione di meda, ma in 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

Puoi anche controllare il valore di Request.Browser.Cookies . Se vero, il browser supporta i cookie.

questo è il modo migliore

tratto da 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"
  }
}

grazie a Venkat K

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top