O que significa o código de estado HTTP 0

Estou a trabalhar no projecto iOS.

Nesta aplicação estou a descarregar imagens do servidor.

Problema:

enquanto faço o download de imagens, estou a receber peço tempo-limite . De acordo com a documentação, o código de Estado do HTTP do tempo-limite do pedido é 408.

mas na minha aplicação estou a obter o código de estado HTTP 0 com o seguinte erro

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."}

durante a pesquisa na internet não encontrei nenhuma informação sobre o código de estado HTTP 0.

Alguém me pode explicar isto?

Author: devios1, 2013-11-08

11 answers

Não existe nenhum código de situação HTTP 0. O que você vê é um 0 devolvido pela API/biblioteca que você está usando. Você terá que verificar a documentação para isso.

 68
Author: Julian Reschke, 2015-04-08 07:55:22

Um código de Estado de 0 num objecto {[[0]} geralmente significa que não houve resposta, e pode ocorrer por várias razões. O servidor nunca irá devolver um estado de 0, uma vez que este não é um código de estado HTTP válido.

No seu caso, você está a aparecer para obter um código de Estado de 0 porque o pedido está a cronometrar e 0 é apenas o valor padrão para a propriedade. O tempo-limite em si pode ser por várias razões, como o servidor simplesmente não responder a tempo, sendo bloqueado por um firewall, ou toda a sua ligação de rede estar desligada. Geralmente no caso do último, embora o telefone é inteligente o suficiente para saber que não tem uma conexão de rede e vai falhar imediatamente. No entanto, ele ainda vai falhar com um código de status aparente de 0.

Note que nos casos em que o código de Estado é 0, o erro real é capturado no objecto retornado NSError, não no NSHTTPURLResponse.

O Estado de HTTP 408 é bastante incomum na minha experiência. Nunca encontrei nenhum. Mas é. aparentemente usado nos casos em que o cliente precisa de manter uma ligação de 'socket' activa ao servidor, e o servidor está à espera que o cliente envie mais dados sobre o 'socket' aberto, mas não o faz numa dada quantidade de tempo e o servidor termina a ligação com um código de estado 408, essencialmente dizendo ao cliente "demorou demasiado tempo".

 58
Author: devios1, 2017-05-11 19:52:10

A resposta estava vazia. A maioria dos casos os códigos serão stats com 1xx, 2xx, 3xx, 4xx, 5xx.

Lista dos códigos de estado HTTP

 7
Author: VDN, 2014-06-04 13:18:45

Em iOS SDK quando a tua API pede tempo, ficas com 0 de status para isso.

 7
Author: Ankit Kumar Gupta, 2014-10-13 10:48:41
Pela minha limitada experiência, diria que os dois cenários seguintes podem causar resposta, tenham em mente; podem ser mais, mas eu conheço esses dois:
    A sua ligação talvez esteja a responder lentamente. Ou talvez o servidor não esteja disponível.

O problema é que status: 0 é um pouco genérico, e os seus casos podem ser mais úteis que desencadeiam um corpo de resposta vazio.

 4
Author: Simple-Solution, 2015-08-13 11:49:13
Temos o erro.

GET http://localhost/pathToWebSite/somePage.o aspx criou um http.estado: 0 erro

Essa chamada é feita da tarefa do windows que chama um ficheiro VBS, por isso para resolver o problema, apontou um navegador para a url e obtemos um erro de Privacidade:

A sua ligação não é privada

Os atacantes podem estar a tentar roubar a tua informação do localhost. (por exemplo, senhas, mensagens ou cartões de crédito). NET:: ERR_ CERT_ COMMON_ NAME_INVALID

Comunicar automaticamente detalhes de possíveis incidentes de segurança ao Google. Política de privacidade de volta à segurança este servidor não pôde provar que é localhost; o seu certificado de segurança é de *.ourdomain.com. ser causado por uma má configuração ou por um atacante interceptar o seu conexao. Aprender.

Isto é porque temos uma regra de reescrita de URL IIS definida para forçar as ligações a usar https. Essa regra diverge http://localhost a https://localhost mas o nosso certificado SSL baseia-se num nome de domínio voltado para fora e não no localhost, pelo que o erro é reportado como código de Estado 0. Portanto, um erro de Privacidade pode ser uma razão muito obscura para este código de Estado 0.

No nosso caso, a solução era adicionar uma excepção à regra para localhost e permitir http://localhost/pathToWebSite/somePage.aspx para usar o http. Obscuro, Sim, mas vou encontrar isto no próximo ano e agora vou encontrar a minha resposta numa pesquisa no google.

 2
Author: Jeff Mergler, 2017-05-06 00:17:56

A resposta HTTP 0 não é a resposta HTTP padrão. Mas isso indica que o cliente não poderia se conectar com o servidor e, portanto, o tempo fora aconteceu.

 2
Author: shuaib ahmad, 2018-06-27 03:10:13

Eu tenho um cliente de Java script ajax & nodejs express application server

O Código do cliente parece:

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

O código do servidor parece:

...
// 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 minutos de luta para resolver isto.
Espero que este post ajude alguém. Boa sorte.
 0
Author: Manohar Reddy Poreddy, 2015-07-23 09:04:17

No tempo limite do Caminho do Portal, o estado será zero na sua chamada de erro de volta.

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

Códigos de estado HTTP

 0
Author: Prashobh, 2017-03-15 10:51:14
No meu caso. Uma vez tive essa resposta numa aplicação do iOS. A solução era a falta {[[0]} nos cabeçalhos.

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

 0
Author: olivier, 2018-08-14 10:32:58

O código de Estado '0' pode ocorrer devido a três razões
1) o cliente não pode ligar-se ao servidor
2) O cliente não pode receber a resposta dentro do prazo-limite
3) o pedido foi "parado(abortado)" pelo Cliente.

Mas estas três razões não são padronizadas

 0
Author: Hariprasath Yadav, 2018-09-14 08:03:09