Что означает код состояния HTTP 0


Я работаю над проектом iOS.

В этом приложении я загружаю изображения с сервера.

:

при загрузке изображений я получаю Тайм-Аут Запроса. Согласно документации HTTP код состояния таймаута запроса 408.

но в моем приложении я получаю код состояния HTTP код 0 со следующей ошибкой

Error Domain=NSURLErrorDomain Code=-1001 "The request timed out." UserInfo=0xb9af710 {NSErrorFailingURLStringKey=http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg, NSErrorFailingURLKey=http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg, NSLocalizedDescription=The request timed out., NSUnderlyingError=0x13846870 "The request timed out."}

во время поиска по интернету I не найдено информации о HTTP Status Code 0.

может кто-нибудь объяснить это мне?

11 66

11 ответов:

нет кода состояния HTTP 0. То, что вы видите, - это 0, возвращаемый API/библиотекой, которую вы используете. Вам придется проверить документацию для этого.

код состояния 0 в NSHTTPURLResponse объект обычно означает, что ответа не было, и может произойти по разным причинам. Сервер никогда не вернет состояние 0, так как это не является допустимым кодом состояния HTTP.

в вашем случае, вы появляется чтобы получить код состояния 0, потому что запрос тайм-аут и 0-это только значение по умолчанию для свойства. Сам тайм-аут может быть по разным причинам, например, сервер просто не отвечает вовремя, блокируется брандмауэром, или все ваше сетевое подключение не работает. Обычно в случае последнего, хотя телефон достаточно умен, чтобы знать, что он не имеет сетевого подключения и немедленно выйдет из строя. Однако он все равно не будет работать с очевидным кодом состояния 0.

обратите внимание, что в случаях, когда код состояния равен 0, реальная ошибка фиксируется в возвращенном

ответ был пуст. В большинстве случаев коды будут статистика с 1xx, 2xx, 3xx, 4xx, 5xx.

список кодов состояния HTTP

в iOS SDK, когда ваш API вызывает тайм-ауты, вы получаете статус 0 для этого.

из моего скромного опыта, я бы сказал, что следующие два сценария могут вызвать ответ status code: 0, имейте в виду; их может быть больше, но я знаю об этих двух:

  • ваше соединение, возможно, отвечает медленно.
  • или, возможно, сервер back-end недоступен.

дело в том, что status: 0 немного общий, и их может быть больше вариантов использования, которые вызывают пустым телом ответа.

мы получили ошибку:

GET http://localhost/pathToWebSite/somePage.aspx поднял http.статус: Ошибка 0

этот вызов сделан из задачи windows, которая вызывает файл VBS, поэтому для устранения проблемы, указал браузер на url-адрес, и мы получаем ошибку конфиденциальности:

ваше соединение не является частным

злоумышленники могут пытаться похитить ваши данные с localhost (например, пароли, сообщения, или кредитная карта.) NET:: ERR_CERT_COMMON_NAME_INVALID

автоматически сообщать подробности возможных инцидентов безопасности в Google. Политика конфиденциальности вернуться к безопасности этот сервер не может доказать, что это localhost; его сертификат безопасности от *.ourdomain.com. это может может быть вызвано неправильной конфигурацией или злоумышленником, перехватывающим ваш соединение. Учить больше.

Это потому, что у нас есть правило перезаписи URL IIS, установленное для принудительного использования соединений https. Это правило отвлекает http://localhost до https://localhost но наш сертификат SSL основан на внешнем доменном имени, а не localhost, поэтому ошибка, которая сообщается как код состояния 0. Таким образом, ошибка конфиденциальности может быть очень неясной причиной для этого кода состояния 0.

в нашем случае решение было добавить исключение из правила для localhost и разрешить http://localhost/pathToWebSite/somePage.aspx для использования http. Неясно, да, но я столкнусь это в следующем году, и теперь я найду свой ответ в поиске google.

HTTP-ответ 0 не является стандартным HTTP-ответом. Но это указывает на то, что клиент не мог соединиться с сервером и, следовательно, произошло четвертое время ожидания.

у меня есть java-скрипт ajax client & nodejs express application server

клиентский код выглядит так:

...
var status1 = xmlHttpRequest.status;
...

код сервера выглядит так:

...
// An exception here results HTTP status codes in status1 (at client side above)
...
...
var reqDb = http.request(options, requestCompleteCallback);
...
...
function requestCompleteCallback(response) {
    ...
    // An exception here results in 0 in status1 (at client side above)
    ...
}

30 минут борьбы, чтобы понять это.
Надеюсь, этот пост кому-то поможет.

удачи.

on Gate way timeout, статус будет равен нулю при обратном вызове ошибки.

.error( function( data,status,headers,config){
    console.log(status) 
 }

коды состояния HTTP

CORS в моем случае.

У меня был такой ответ в приложении iOS один раз. Решение было отсутствующим Access-Control-Allow-Origin: * в заголовках.

еще: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin

код состояния '0' может произойти из-за три причины
1) Клиент не удается подключиться к серверу
2) Клиент не удается получить ответ в течение периода ожидания
3) запрос "остановлен(прерван)" клиент.

но эти три причины не стандартизированы