Почему мой блок перехвата не перехватывает "Запросы перекрестного происхождения поддерживаются только для схем протоколов: http..."
У меня есть сценарий JavaScript, который использует JQuery post
Команда для входа на сервер и получения токена. Я завернул свой код в try
блок с catch
блок, который выглядит так:
catch (error)
{
alert(error.message);
}
Мой код работает нормально, но для его тщательного тестирования я намеренно изменил протокол так, чтобы URL выглядел следующим образом:
"htt://some.domain:8080/jsonrpc"
Мой код не улавливает ошибку и отображает предупреждение. Скорее всего, консоль Chrome показывает следующую ошибку:
XMLHttpRequest не может загрузить htt://some.domain:8080/jsonrpc. Запросы между источниками поддерживаются только для схем протоколов: http, data, chrome, chrome-extension, https, chrome-extension-resource.
Я ожидаю, что вместо ошибки в консоли возникнет какое-то искажение URL-адреса.
Результаты других преднамеренных ошибок, таких как неверный пароль, приводят к возникновению исключений.
Спасибо
1 ответ
Потому что Аякс асинхронный. Ошибка происходит за пределами блока try/catch.
Этот класс ошибок может быть обнаружен в XMLHttpRequest путем изменения статуса на 0
, (Этот код состояния также охватывает несколько других состояний ошибки, поэтому вы не можете быть точными).
error
Обработчик, который вы можете передать jQuery, ajax сработает, когда статус будет равен 0.