Существует ли кросс-браузерный способ игнорирования ошибок 401, вызванных XHR? - PullRequest
0 голосов
/ 18 августа 2011

Пытаясь сохранить как можно более чистый подход REST, я решил, что приложение будет API-интерфейсом - до последнего бита.

К сожалению, я дошел до одной ошибкиблок.После написания обработчика дайджест-аутентификации на PHP, я не смог сделать его более удобным для пользователей в веб-браузерах, чем метод аутентификации на основе форм.

Причина этого в том, что хотя я могуимитировать дайджест-аутентификацию ответа через Javascript, используя имя пользователя и пароль из HTML-формы (я могу безопасно передать скрипту значения nonce в зависимости от способа их генерации), при сбое браузер по-прежнему показывает стандартный, уродливыйзапрос аутентификации.

Есть ли способ обойти это?Более ранний вопрос ссылается на mozBackgroundRequest, но это вряд ли кросс-браузер.

Спасибо!

1 Ответ

0 голосов
/ 18 августа 2011

Сначала вы можете сделать запрос в AJAX, чтобы убедиться, что предоставленные данные аутентификации работают.

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

EDIT

Если вы управляете процедурой аутентификации в PHP (и если аутентификация не выполняется, предположительно, с помощью header('HTTP/1.1 401 Unauthorized'); и т. Д.), Вы можете просто ... не делать этого. Вместо этого ответьте обычным 200 OK, но поместите в текст строку, которую вы можете найти в ajax.responseText (например, «authFailed» или что-то в этом роде).

Вы можете просто добавить заголовок (или файл cookie, или что-то еще) к запросам AJAX, которых нет в обычных запросах браузера, чтобы можно было различать проверки аутентификации AJAX и обычный сеанс с проверкой подлинности.

Точная механика в моей голове сейчас немного размыта (это был долгий день), но я уверен, что это можно сделать с помощью этого метода.

...