Conteúdo

    Resposta do servidor 416 Range Not Satisfiable

    Status HTTP 416: Range Not Satisfiable

    O código de status HTTP 416 indica que o servidor não pode satisfazer o intervalo de dados solicitado pelo cliente. Esse problema pode surgir quando o cliente tenta acessar uma parte específica de um recurso, mas o intervalo solicitado está fora dos dados disponíveis. Nesta seção, discutiremos as principais causas do código de status 416, exemplos práticos de sua ocorrência e maneiras de corrigir esses erros em diferentes linguagens de programação.

    416 - Range Not Satisfiable

    Causas do Código de Status 416

    • Intervalo incorretamente especificado

      Um cliente pode cometer um erro ao definir o intervalo, como solicitar um intervalo que excede o tamanho do arquivo. Por exemplo, se um arquivo tem 500 bytes e o cliente solicita um intervalo de 0-600, o servidor retornará o código 416.

    • Dados ausentes no servidor

      Isso pode ocorrer quando um recurso foi removido ou alterado, e o intervalo solicitado é maior do que os dados disponíveis. Se um arquivo foi excluído ou seu tamanho alterado, o cliente pode não estar ciente dessas mudanças.

    • Headers inadequados

      Headers Range mal configurados podem resultar no erro 416. Um exemplo é quando o cliente não fornece os limites adequados ou os formata incorretamente.

    Exemplos Práticos

    1. Exemplo com arquivo de áudio

      Um cliente solicita um intervalo de 0-1000 bytes de um arquivo de áudio que possui apenas 800 bytes. O servidor responderá com o código 416.

    2. Exemplo com imagem

      Se um cliente tentar solicitar uma parte de uma imagem que foi alterada, e não conhecer as novas dimensões, o servidor pode retornar 416. O cliente pode solicitar um intervalo que não existe mais.

    3. Exemplo com arquivo de texto

      Um cliente tenta acessar um intervalo de um arquivo de texto que foi reduzido em tamanho, como solicitar um intervalo de 0-500 bytes de um arquivo que agora tem apenas 300 bytes. O servidor, novamente, retornará 416.

    Correção do Erro 416 em Diferentes Linguagens de Programação

    Python (usando a biblioteca requests)

    import requests
    
    url = "http://exemplo.com/arquivo.mp3"
    headers = {'Range': 'bytes=0-1000'}
    
    response = requests.get(url, headers=headers)
    
    if response.status_code == 416:
        print("Erro: Intervalo não satisfatório")
    else:
        print("Dados recebidos com sucesso")

    JavaScript (usando Fetch API)

    fetch("http://exemplo.com/imagem.jpg", {
        headers: {
            'Range': 'bytes=0-500'
        }
    })
    .then(response => {
        if (response.status === 416) {
            console.error("Erro: Intervalo não satisfatório");
        } else {
            console.log("Dados recebidos com sucesso");
        }
    });

    PHP (usando cURL)

    $ch = curl_init("http://exemplo.com/texto.txt");
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Range: bytes=0-500'));
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $response = curl_exec($ch);
    
    if (curl_getinfo($ch, CURLINFO_HTTP_CODE) == 416) {
        echo "Erro: Intervalo não satisfatório";
    } else {
        echo "Dados recebidos com sucesso";
    }
    curl_close($ch);

    Tabela Resumo das Causas do Erro 416

    Causa Descrição
    Intervalo incorreto O cliente solicita um intervalo fora do tamanho do arquivo.
    Dados ausentes O recurso foi removido ou alterado e o intervalo é maior que os dados disponíveis.
    Headers inadequados Headers de intervalo mal configurados que não correspondem ao conteúdo.

    O código de status 416 é um indicativo de problemas na disponibilidade do intervalo de dados solicitado. Para evitar esse status, é crucial especificar corretamente os intervalos e implementar tratamentos adequados para possíveis erros no lado do cliente.