Что означает код состояния 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 0.

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

11 ответов


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


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

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

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


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

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


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


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

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

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


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

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

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

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

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

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

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

в нашем случае решением было добавить исключение из правил для localhost и разрешить http://localhost/pathToWebSite/somePage.аспн использовать 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) запрос "остановлен(прерван)" клиент.

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