Hola,
Encontré un servidor web integrado en uno de mis dispositivos "IoT", que no se autentica mientras se usa el módulo de "solicitud" dentro de iobroker.javascript.
El problema es que esa solicitud envía el campo de encabezado de autorización en minúsculas. No sé, si está definido en RFC si el encabezado tiene que distinguir entre mayúsculas y minúsculas.
¿Es posible cambiar el archivo auth.js (y tal vez también otros) para que los campos de encabezado comiencen con letras mayúsculas y continúen con minúsculas como
Autorización
por ejemplo. Hay algunos otros ejemplos de este comportamiento, como el encabezado del host, etc.
| software | versión
| ---------------- | -------
| solicitud | 2.79.0
| nodo | 4.5.0
| npm | 3.10.8
| Sistema operativo | Ubuntu 14.04.5 LTS con kernel 3.16.0-44-generic # 59 ~ 14.04.1-Ubuntu
Saludos cordiales Uwe
Según las especificaciones de RFC, los encabezados HTTP no distinguen entre mayúsculas y minúsculas. Tendrá que configurar esos encabezados manualmente con la opción headers
.
Un poco más sobre esto, porque surge mucho.
@simov es correcto, su servidor no cumple con las especificaciones. La especificación HTTP deja muy claro que los encabezados no deben distinguir entre mayúsculas y minúsculas.
En la solicitud, de forma predeterminada, en minúsculas para los encabezados que genera la solicitud, pero cuando establece los encabezados manualmente, preservamos la carcasa de esos encabezados para que pueda tratar con servidores que no cumplen con las especificaciones.
Deberá generar los encabezados de autenticación usted mismo y configurarlos con las funciones headers
o setHeader
en la solicitud si desea una carcasa específica. No es razonable que la solicitud cambie sus valores predeterminados para servidores que no cumplen con las especificaciones porque simplemente no hay forma de que ganemos, siempre habrá un servidor al que no le gusta un valor predeterminado en particular y no cumple con las especificaciones.
Respetuosamente, creo que esto merece ser revisado. Es cierto que el RFC especifica encabezados que no distinguen entre mayúsculas y minúsculas, pero la realidad es que la mayoría de las personas no realizan pruebas con nada más que con los navegadores web comunes. El manejo de casos de los servidores http a menudo está fuera del control de los usuarios de esta biblioteca.
La mayoría de los navegadores utilizan encabezados en mayúsculas y minúsculas, lo más útil que podría hacer esta biblioteca sería emular las cadenas más utilizadas, por ejemplo, Host:
not host:
, Cookie:
not cookie:
. De esta manera, funcionará en todos los lugares donde funcionen nuestros navegadores. Unirse a la manada traerá una mejor compatibilidad (correcta o incorrectamente) y también tiene beneficios de privacidad.
Feliz de trabajar en un parche si es probable que sea aceptado, ¿piensas? Se podría marcar una característica para preservar la compatibilidad para las personas que prefieren minúsculas.
Comentario más útil
Respetuosamente, creo que esto merece ser revisado. Es cierto que el RFC especifica encabezados que no distinguen entre mayúsculas y minúsculas, pero la realidad es que la mayoría de las personas no realizan pruebas con nada más que con los navegadores web comunes. El manejo de casos de los servidores http a menudo está fuera del control de los usuarios de esta biblioteca.
La mayoría de los navegadores utilizan encabezados en mayúsculas y minúsculas, lo más útil que podría hacer esta biblioteca sería emular las cadenas más utilizadas, por ejemplo,
Host:
nothost:
,Cookie:
notcookie:
. De esta manera, funcionará en todos los lugares donde funcionen nuestros navegadores. Unirse a la manada traerá una mejor compatibilidad (correcta o incorrectamente) y también tiene beneficios de privacidad.Feliz de trabajar en un parche si es probable que sea aceptado, ¿piensas? Se podría marcar una característica para preservar la compatibilidad para las personas que prefieren minúsculas.