HTTP Redirecionamento de URLs cirílicas: este exemplo funciona sem que URLs sejam codificados. Por quê?

1

De acordo com o link , os campos de cabeçalho HTTP devem ser retornados usando a codificação de caracteres ISO-8859-1.

Isso também se aplica ao campo "Local" usado para o redirecionamento. No entanto, olhando para o exemplo a seguir, não consigo descobrir como o redirecionamento funciona, apesar de a URL não estar codificada.

link

Eu executei diferentes ferramentas, incluindo o desenvolvedor do Google Chrome, e o campo de localização é definitivamente codificado, mas usar uma CURL ou um software como o Screaming Frog retorna um local escrito com caracteres cirílicos. Em teoria, o redirecionamento deve resolver em um 404, mas eu tenho 200.

Alguma ideia de como isso é possível?

    
por Frantic Dev 18.03.2016 / 11:19

1 resposta

1

Sim, na verdade, o redirecionamento contém octetos acima de 7 bits (maior que 0x80 hexadecimal). Vários aplicativos irão converter esses octetos para várias representações visuais em sua tela; isso depende do que codificar eles decidem usar.

Se alguém usasse o UTF-8, provavelmente receberia um belo texto em cirílico, mas isso é acidental; fora do tópico para a pergunta.

O

link afirma com bastante precisão:

Historically, HTTP has allowed field content with text in the
ISO-8859-1 charset [ISO-8859-1], supporting other charsets only
through use of [RFC2047] encoding. In practice, most HTTP header
field values use only a subset of the US-ASCII charset [USASCII].
Newly defined header fields SHOULD limit their field values to
US-ASCII octets. A recipient SHOULD treat other octets in field
content (obs-text) as opaque data.

e

obs-text = %x80-FF

Isso significa que praticamente todos os octetos podem ser enviados. O software que exibe um cabeçalho, por exemplo, um navegador que converte os octetos em alguma representação visível na tela, deve usar o ISO-8859-1 para essa conversão .

Mas o servidor que recebe os dados em uma sessão HTTP também está livre para usar os octetos para suas operações, o que é algo que não envolve a exibição de qualquer representação visual em qualquer tela. Neste caso, o servidor HTTP usa os octetos para lhe servir uma página. Como o servidor HTTP obtém apenas alguns octetos de entrada e produz alguns octetos de saída, a "codificação" não se aplica realmente aqui (o servidor HTTP nunca precisa converter bytes em algo que seja exibido em uma tela ou em uma impressora).

    
por 18.03.2016 / 12:15