Request: Strings de cabeçalho com distinção entre maiúsculas e minúsculas

Criado em 24 mar. 2017  ·  3Comentários  ·  Fonte: request/request

Oi,

Encontrei um servidor da web embutido em um dos meus dispositivos "IoT", que não autentica ao usar o módulo "request" dentro de iobroker.javascript.

O problema é que essa solicitação envia o campo de cabeçalho de autorização em letras minúsculas. Não sei se está definido no RFC se o cabeçalho tem que ser sensível a maiúsculas e minúsculas.

É possível alterar o arquivo auth.js (e talvez também outros) para ter os campos de cabeçalho começando com letras maiúsculas e continuando com minúsculas como

Autorização

por exemplo. Existem alguns outros exemplos para esse comportamento, como o cabeçalho do host e assim por diante.

| software | versão
| ---------------- | -------
| pedido | 2.79.0
| nó | 4.5.0
| npm | 3.10.8
| Sistema operacional | Ubuntu 14.04.5 LTS com kernel 3.16.0-44-generic # 59 ~ 14.04.1-Ubuntu

Atenciosamente Uwe

Comentários muito úteis

Respeitosamente, acho que isso merece ser revisitado. É verdade que o RFC especifica cabeçalhos que não diferenciam maiúsculas de minúsculas, mas a realidade é que a maioria das pessoas não testa nada além de navegadores comuns. O tratamento de casos de servidores http geralmente está fora do controle dos usuários desta biblioteca.

A maioria dos navegadores usa cabeçalhos com caixa de título, a coisa mais útil que esta biblioteca poderia fazer seria emular as strings mais comumente usadas, por exemplo, Host: not host: , Cookie: not cookie: . Dessa forma, ele funcionará em todos os lugares em que nossos navegadores funcionem. Juntar-se ao rebanho trará melhor compatibilidade (certa ou errada) e também traz benefícios de privacidade.

Feliz em trabalhar em um patch se ele for aceito, ideias? Pode ser um recurso sinalizado para preservar a compatibilidade para pessoas que preferem letras minúsculas.

Todos 3 comentários

Por especificação RFC, os cabeçalhos HTTP não diferenciam maiúsculas de minúsculas. Você terá que definir esses cabeçalhos manualmente com a opção headers .

Um pouco mais sobre isso, porque surge muito.

@simov está correto, seu servidor não é compatível com as especificações. A especificação HTTP deixa bem claro que os cabeçalhos não devem fazer distinção entre maiúsculas e minúsculas.

Na solicitação, o padrão é usar letras minúsculas para os cabeçalhos que a solicitação gera, mas quando você define os cabeçalhos manualmente, preservamos a caixa desses cabeçalhos para que você possa lidar com servidores que não são compatíveis com as especificações.

Você mesmo precisará gerar os cabeçalhos de autenticação e defini-los com os recursos headers ou setHeader solicitados, se desejar um caso específico. Não é razoável que a solicitação mude seus padrões para servidores que não são compatíveis com as especificações porque simplesmente não há como vencermos, sempre haverá um servidor que não gosta de um padrão específico e não é compatível com as especificações.

Respeitosamente, acho que isso merece ser revisitado. É verdade que o RFC especifica cabeçalhos que não diferenciam maiúsculas de minúsculas, mas a realidade é que a maioria das pessoas não testa nada além de navegadores comuns. O tratamento de casos de servidores http geralmente está fora do controle dos usuários desta biblioteca.

A maioria dos navegadores usa cabeçalhos com caixa de título, a coisa mais útil que esta biblioteca poderia fazer seria emular as strings mais comumente usadas, por exemplo, Host: not host: , Cookie: not cookie: . Dessa forma, ele funcionará em todos os lugares em que nossos navegadores funcionem. Juntar-se ao rebanho trará melhor compatibilidade (certa ou errada) e também traz benefícios de privacidade.

Feliz em trabalhar em um patch se ele for aceito, ideias? Pode ser um recurso sinalizado para preservar a compatibilidade para pessoas que preferem letras minúsculas.

Esta página foi útil?
0 / 5 - 0 avaliações