Каков наилучший способ определения того, включен ли в браузере пользователя cookie в ASP.NET
Лучший способ определить, включены ли файлы cookie в ASP.NET?
Ответ 1
Установите cookie, принудительно перенаправляйте на страницу проверки и проверяйте файл cookie.
Или настройте файл cookie на каждой странице, если он еще не установлен. Например, я предполагаю, что это проверить, поддерживаются ли файлы cookie для отображения сообщения, когда они пытаются войти в систему, чтобы включить куки. Установите свой файл cookie для входа в какое-либо значение по умолчанию для гостевых пользователей, если у них еще нет набора файлов cookie. Затем на странице входа в систему проверьте файл cookie пользователя, и если он не установлен, отобразите свое сообщение.
Ответ 2
@Mattew прав, единственный способ узнать это установить cookie, перенаправить, а затем проверить его. Вот функция С#, чтобы выполнить эту проверку, вы можете поместить это в событие загрузки страницы:
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 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("testcookie") != -1) ? 1 : 0;
}
return cookieEnabled == 1;
}
Ответ 3
Пишите cookie, перенаправляйте, смотрите, можете ли вы прочитать cookie.
Ответ 4
Я думаю, что если мы сможем сохранить cookie в начале сессии Global.ASAX и прочитать, что на странице.. это лучший способ?
Ответ 5
Функция meda С# работает, хотя вам нужно изменить строку:
HttpCookie cookie = новый HttpCookie ( "," ");
к
HttpCookie cookie = новый HttpCookie ( "CookieTest", "CookieTest" );
Ответ 6
По существу то же самое решение, что и в 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 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
Ответ 7
Вы также можете проверить значение Request.Browser.Cookies
. Если значение true, браузер поддерживает файлы cookie.
Ответ 8
это лучший способ
взято из 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