Почему мой блок перехвата не перехватывает "Запросы перекрестного происхождения поддерживаются только для схем протоколов: 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.

Другие вопросы по тегам