O que significa o código de estado HTTP 0
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?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.
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".
A resposta estava vazia. A maioria dos casos os códigos serão stats com 1xx, 2xx, 3xx, 4xx, 5xx.
Em iOS SDK quando a tua API pede tempo, ficas com 0 de status para isso.
- 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.
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_INVALIDComunicar 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.
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.
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.
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)
}
Mais: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Access-Control-Allow-Origin
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