Привет,
Я обнаружил встроенный веб-сервер в одном из моих устройств «IoT», который не аутентифицируется при использовании модуля «запрос» внутри iobroker.javascript.
Проблема в том, что этот запрос отправляет поле заголовка авторизации всеми строчными буквами. Я не знаю, если это определено в RFC, если заголовок должен быть чувствительным к регистру.
Можно ли изменить файл auth.js (и, возможно, также другие), чтобы поля заголовка начинались с заглавных букв и продолжались строчными буквами, как
Авторизация
Например. Есть и другие примеры такого поведения, такие как заголовок хоста и так далее.
| программное обеспечение | версия
| ---------------- | -------
| запрос | 2,79,0
| узел | 4.5.0
| npm | 3.10.8
| Операционная система | Ubuntu 14.04.5 LTS с ядром 3.16.0-44-generic # 59 ~ 14.04.1-Ubuntu
С уважением, Уве
Заголовки HTTP согласно спецификации RFC нечувствительны к регистру. Вам нужно будет установить эти заголовки вручную с помощью параметра headers
.
Еще немного об этом, потому что это очень часто встречается.
@simov правильный, ваш сервер не соответствует спецификации. В спецификации HTTP четко указано, что заголовки должны быть нечувствительными к регистру.
В запросе мы по умолчанию используем строчные буквы для заголовков, которые генерируются запросом, но когда вы устанавливаете заголовки вручную, мы сохраняем регистр этих заголовков, чтобы вы могли иметь дело с серверами, которые не соответствуют спецификации.
Вам нужно будет самостоятельно сгенерировать заголовки аутентификации и установить их с помощью функций headers
или setHeader
в запросе, если вам нужен конкретный корпус. Неразумно, чтобы запрос изменял свои значения по умолчанию для серверов, которые не соответствуют спецификации, потому что у нас просто нет способа выиграть, всегда будет сервер, которому не нравится конкретное значение по умолчанию и который не соответствует спецификации.
С уважением, я считаю, что это заслуживает пересмотра. Это правда, что RFC определяет заголовки без учета регистра, но на самом деле большинство людей не тестируют ничего, кроме обычных веб-браузеров. Обработка случаев http-серверов часто находится вне контроля пользователей этой библиотеки.
Большинство браузеров используют заголовки в виде заголовков, самая полезная вещь, которую могла бы сделать эта библиотека, - это имитировать наиболее часто используемые строки, например, Host:
not host:
, Cookie:
not cookie:
. Таким образом, он будет работать везде, где работают наши браузеры. Присоединение к стаду улучшит совместимость (правильную или ошибочную), а также принесет пользу конфиденциальности.
Рад работать над патчем, мысли? Может быть отмечена функция, чтобы сохранить совместимость для людей, предпочитающих строчные буквы.
Самый полезный комментарий
С уважением, я считаю, что это заслуживает пересмотра. Это правда, что RFC определяет заголовки без учета регистра, но на самом деле большинство людей не тестируют ничего, кроме обычных веб-браузеров. Обработка случаев http-серверов часто находится вне контроля пользователей этой библиотеки.
Большинство браузеров используют заголовки в виде заголовков, самая полезная вещь, которую могла бы сделать эта библиотека, - это имитировать наиболее часто используемые строки, например,
Host:
nothost:
,Cookie:
notcookie:
. Таким образом, он будет работать везде, где работают наши браузеры. Присоединение к стаду улучшит совместимость (правильную или ошибочную), а также принесет пользу конфиденциальности.Рад работать над патчем, мысли? Может быть отмечена функция, чтобы сохранить совместимость для людей, предпочитающих строчные буквы.