Ответ 1
Прочитайте обновление этого ответа внизу.
Оригинальный ответ
Я нашел, что проблема, и удалось заставить выполнять базовую аутентификацию.
Проблема заключалась в том, что веб-сервер ожидал, что основные данные аутентификации будут предварительно отправлены с запросом.
Для этого используйте свойство заголовков "jquery ajax, как показано ниже:
$.ajax
({
type: "GET",
url: "https://webserver/authenticate",
headers: {
"Authorization": "Basic " + btoa(USERNAME + ":" + PASSWORD)
}
})
.done(function(){
alert('Authenticated!')
})
.fail(function(){
alert('Error!')
});
См. соответствующий ответ: fooobar.com/info/20870/...
Обновление
В конце концов я обнаружил, что нет надежного способа использования базовой аутентификации в веб-представлении в iOS. I.e все нормально, если вводятся правильные учетные данные, но когда они отсутствуют, и ответ на вызов 401 возникает, веб-представление iOS не может справиться с этим.
В конце концов, аутентификация веб-службы была реализована простым передачей параметров "имя пользователя" и "пароль" как часть URL-адреса:
url: "https://webserver/authenticate?username=abc&password=123"
Это единственный последовательный способ, с помощью которого я получаю аутентификацию для работы через iOS и Android в веб-представлении (вообще избавляясь от базовой аутентификации). Это, конечно же, означало обновление самого веб-сервиса для принятия аутентификации таким образом.