Назад | Перейти на главную страницу

Код состояния HTTP, когда сервер не работает?

Мое мобильное приложение должно отправить запрос Ajax и знать разницу между тем, если сервер не работает или сервер работает, но выдает ошибку.

Я понимаю, что в случае ошибки сервера сервер вернет ответ с кодом 50X.

Но что будет, если сервер выйдет из строя. Какую ошибку получит клиент?

Я искал, но это меня сбивает с толку - люди советуют настроить ваш сервер для ответа с кодом 503, если он находится на обслуживании. Но я не могу понять факт - что сервер не работает, как он может отправить ответ 503 ??

Обычно балансировщик нагрузки переднего плана отправляет 503 Сервис недоступен ошибка, если фактический веб-сервер не работает. Если у вас нет балансировщика нагрузки и сервер, стоящий за ним, не работает, или если балансировщик нагрузки не работает, клиент получит сообщение Время соединения вышло. Если сервер работает, но Apache не запущен, клиент получит В соединении отказано.

В случае отказа сервера сам вызов AJAX вернет ошибку.

response = url.open("http://...");
if (response == NULL) { /* handle Connection timeout / Conn refused */ }

В случае 503 ваш вызов AJAX фактически выполняет HTTP-запрос, за исключением того, что код ошибки говорит о наличии проблемы. Что-то вроде:

response = url.open("http://...");
if (response.code == 503) { /* handle service unavailable */ }

Надеюсь, это поможет :)