Удалить учетные данные htaccess в Safari - PullRequest
0 голосов
/ 09 ноября 2009

У меня есть приложение, которое входит в систему через .htaccess. Когда человек хочет выйти из системы, я использую:

функция logout2 () {попробуй {

  var agt=navigator.userAgent.toLowerCase();
  if (agt.indexOf("msie") != -1) {
  // IE clear HTTP Authentication
  document.execCommand("ClearAuthenticationCache");
 } 
 else {
   var xmlhttp = createXMLObject();
xmlhttp.open("GET",".force_logout_offer_login_mozilla",true,"logout","");
xmlhttp.send("");
xmlhttp.abort();
}
} catch(e) {

alert("there was an error");
 }

function createXMLObject() {
  try {   if (window.XMLHttpRequest) {    xmlhttp =

new XMLHttpRequest (); } // код для IE еще, если (window.ActiveXObject) {
XMLHTTP = новый ActiveXObject ( "Microsoft.XMLHTTP");
}} catch (e) {xmlhttp = false} вернуть xmlhttp; }

Проблема в том, что это не работает в Safari, человек всегда входит в систему, используя начальные учетные данные, даже закрывая и снова открывая браузер. Кто-нибудь знает, как справиться с этим?

1 Ответ

1 голос
/ 09 ноября 2009

Это недокументированная особенность реализации XMLHttpRequest в Mozilla, согласно которой отправка неверного аутентификации в XMLHttpRequest влияет на аутентификацию, используемую основным браузером в будущем. Использование этого для обеспечения выхода из системы на данный момент является разумным хаком, но я бы не рассчитывал на то, что это сработает в будущем, не говоря уже о других браузерах.

Единственный надежный кросс-браузерный способ, который я знаю, чтобы разрешить функцию выхода из системы, - это перенаправить пользователя на страницу, которая будет 401 его, когда они передают действительные аутентификационные учетные данные вместо недействительных. Затем вошедший в систему пользователь получит приглашение авторизации, в которое он может ввести неверную аутентификацию (обычно вы говорите ему просто оставить поля user / pass пустыми). Сценарий положительно реагирует (например, 302) на плохой аутентификации, и браузер запоминает его на будущее, перезаписывая предыдущий хороший аутентификации.

К сожалению, этот процесс требует значительного взаимодействия с пользователем. Это один из недостатков HTTP-аутентификации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...