O que é o comportamento esperado do servidor que retorna Http 416

2

Eu tenho um servidor e, às vezes, quando o cliente solicita um arquivo e se o seu cabeçalho de solicitação Range pode ficar acima do tamanho do arquivo, o servidor retorna 416 código de status. Mas eu estou querendo saber se deve escrever conteúdo de arquivo também? ou simplesmente retornar 416 sem conteúdo?

As explicações no Site da W3 não esclarecem o suficiente.

O que eu entendi da web W3, que deve escrever cabeçalho Content-Range (começando com 0?). Então, se o comprimento do conteúdo é de 10 bytes. A resposta deve se parecer com

HTTP/1.1 416
Content-Range: bytes 0-9/10
Content-Length: 10    

[10 bytes FILE CONTENT HERE]
    
por xmen 03.07.2014 / 11:46

1 resposta

2

Você deve estar servindo um 206 neste caso.

RFC 7233 deixa claro que se qualquer parte da faixa solicitada for satisfatória, é isso que você envia de volta, mesmo que parte do intervalo não seja satisfatória.

Da seção 2.1:

If a valid byte-range-set includes at least one byte-range-spec with a first-byte-pos that is less than the current length of the representation, or at least one suffix-byte-range-spec with a non-zero suffix-length, then the byte-range-set is satisfiable. Otherwise, the byte-range-set is unsatisfiable.

Portanto, se o seu arquivo é de 1000 bytes, e o cliente solicita bytes = 501-2000, você retornará um 206 e serve bytes 501-1000. (E lembre-se de que os intervalos começam do zero, portanto, atente para erros off-by-one.)

No caso de nenhuma parte do intervalo ser satisfatível, você envia um erro 416, mas não envia nenhum conteúdo de arquivo. O ponto principal do erro é que não há nada para enviar!

    
por 04.07.2014 / 06:08