Request: En-tête sensible à la casse

Créé le 24 mars 2017  ·  3Commentaires  ·  Source: request/request

Salut,

J'ai trouvé un serveur Web intégré dans l'un de mes appareils "IoT", qui ne s'authentifie pas lors de l'utilisation du module "request" dans iobroker.javascript.

Le problème est que cette demande envoie le champ d'en-tête d'autorisation en lettres minuscules. Je ne sais pas s'il est défini dans RFC si l'en-tête doit être sensible à la casse.

Est-il possible de modifier le fichier auth.js (et peut-être aussi d'autres) pour que les champs d'en-tête commencent par des lettres majuscules et continuent par des minuscules comme

Autorisation

par example. Il existe d'autres exemples de ce comportement, comme l'en-tête de l'hôte, etc.

| logiciel | version
| ---------------- | -------
| demande | 2.79.0
| nœud | 4.5.0
| npm | 3.10.8
| Système d'exploitation | Ubuntu 14.04.5 LTS avec noyau 3.16.0-44-generic #59~14.04.1-Ubuntu

Cordialement Uwe

Commentaire le plus utile

Respectueusement, je pense que cela mérite d'être revisité. Il est vrai que la RFC spécifie des en-têtes insensibles à la casse, mais la réalité est que la majorité des gens ne testent rien d'autre que les navigateurs Web courants. La gestion des cas des serveurs http est souvent hors du contrôle des utilisateurs de cette bibliothèque.

La majorité des navigateurs utilisent des en-têtes contenant des titres, la chose la plus utile que cette bibliothèque pourrait faire serait d'émuler les chaînes les plus couramment utilisées, par exemple Host: not host: , Cookie: not cookie: . De cette façon, cela fonctionnera partout où nos navigateurs fonctionnent. Rejoindre le troupeau apportera une meilleure compatibilité (à tort ou à raison) et présente également des avantages en matière de confidentialité.

Heureux de travailler sur un patch s'il est susceptible d'être accepté, des réflexions ? Peut être marqué pour préserver la compatibilité pour les personnes qui préfèrent les minuscules.

Tous les 3 commentaires

Selon les spécifications RFC, les en-têtes HTTP sont insensibles à la casse. Vous devrez définir ces en-têtes manuellement avec l'option headers .

Un peu plus à ce sujet, car cela revient beaucoup.

@simov est correct, votre serveur n'est pas conforme aux spécifications. La spécification HTTP indique très clairement que les en-têtes doivent être insensibles à la casse.

Dans la demande, nous utilisons par défaut des minuscules pour les en-têtes générés par la demande, mais lorsque vous définissez des en-têtes manuellement, nous préservons la casse de ces en-têtes afin que vous puissiez traiter les serveurs qui ne sont pas conformes aux spécifications.

Vous devrez générer vous-même les en-têtes d'authentification et les définir avec les fonctionnalités headers ou setHeader demandées si vous souhaitez une casse spécifique. Il n'est pas raisonnable que la demande modifie ses valeurs par défaut pour les serveurs qui ne sont pas conformes aux spécifications, car il n'y a tout simplement aucun moyen pour nous de gagner, il y aura toujours un serveur qui n'aime pas une valeur par défaut particulière et n'est pas conforme aux spécifications.

Respectueusement, je pense que cela mérite d'être revisité. Il est vrai que la RFC spécifie des en-têtes insensibles à la casse, mais la réalité est que la majorité des gens ne testent rien d'autre que les navigateurs Web courants. La gestion des cas des serveurs http est souvent hors du contrôle des utilisateurs de cette bibliothèque.

La majorité des navigateurs utilisent des en-têtes contenant des titres, la chose la plus utile que cette bibliothèque pourrait faire serait d'émuler les chaînes les plus couramment utilisées, par exemple Host: not host: , Cookie: not cookie: . De cette façon, cela fonctionnera partout où nos navigateurs fonctionnent. Rejoindre le troupeau apportera une meilleure compatibilité (à tort ou à raison) et présente également des avantages en matière de confidentialité.

Heureux de travailler sur un patch s'il est susceptible d'être accepté, des réflexions ? Peut être marqué pour préserver la compatibilité pour les personnes qui préfèrent les minuscules.

Cette page vous a été utile?
0 / 5 - 0 notes