Является ли использование плагина jQuery Cookie допустимым способом проверки включения файлов cookie?

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

  •  19-09-2019
  •  | 
  •  

Вопрос

У меня есть сайт, на котором мы требуем, чтобы пользователь включил JavaScript и файлы cookie, прежде чем он сможет войти на сайт.(JS-часть готова и работает отлично.) На данный момент мы устанавливаем cookie, а затем перенаправляем пользователя на другую страницу (на PHP).Это сработало нормально, но теперь у нас есть группа людей, которые добавили в закладки страницу, на которую мы перенаправляем, на которой, конечно, не установлены файлы cookie, и поэтому они не позволяют им войти в систему.

Итак, я пытаюсь найти другое решение для проверки файлов cookie и подумываю об использовании Плагин jQuery Cookie.Мне интересно, совместимо ли оно со всеми браузерами (конечно, если JS включен)?

Это было полезно?

Решение

Спасибо Шону за Ваш ответ, но, к сожалению, поскольку браузеры не всегда отправляют реферер, он недостаточно надежен, чтобы его можно было использовать каждый раз.Потому что, если он не установлен, вы попадаете в петлю.

Еще одно решение, о котором я подумал, — это перенаправление на совершенно отдельную страницу, которая сама проверяет, включены ли файлы cookie (путем перенаправления на себя).Если файлы cookie включены, произойдет перенаправление обратно на исходную страницу.Если это не так, произойдет перенаправление на страницу о проблеме.Я думаю, что это должно сработать, но я не уверен.

В конце концов я попробовал плагин jQuery Cooke в IE 6, 7 и 8, Safari 4, Google Chrome 4, Firefox 3.5, Opera 10.2 и в нескольких различных конфигурациях, и он работал во всех из них.Вот код, который я использую:

$.cookie('test_cookie', 'cookie_value', { path: '/' });
if ($.cookie('test_cookie') == 'cookie_value') {
    // cookie worked, set/enable appropriate things
}

Это не идеально, но я думаю, что это сработает в 95% случаев.В противном случае он потерпит неудачу и просто не позволит им ничего сделать.

Другие советы

Вы можете проверить реферер страницы и, если это не ваша домашняя страница, перенаправить их туда.Если реферером является ваша домашняя страница и файлы cookie не установлены, вы будете знать, что они не включены.

Мне нравится эта функция 1 лайнера:

function cookiesEnabled() {
    return $.cookie('check', 'valid', { expires: 1 }) && $.cookie('check') == 'valid';
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top