Как протокол передается между веб-сервером маршрутизатора и браузером - PullRequest
0 голосов
/ 05 ноября 2019

Я работаю над приложением, которое получает HTTP-сообщение с веб-сервера маршрутизаторов и с него.

Проблема, с которой я сталкиваюсь, заключается в HTTP basic authentication.

RFC 7617 заявляет:
" сервер может ответить на запрос, используя 401 (Unauthorized) код состояния "

То, что я видел в браузере, HTTP захватывает, чтоэто не так для каждого маршрутизатора. Например, TPLINK TLWR840N не отправляет мне 401, и я могу получить ресурс, просто передав запрос http вместе с правильными учетными данными в виде base64 {username: pass} в сообщении http, как показано ниже.

GET //main/ddos.htm?_=1572950350469 HTTP/1.1
Host: 192.168.0.1
Accept: */*
Connection: keep-alive
Referer: http://192.168.0.1
Cookie: Authorization=Basic YeRtaW46YWRtaW5AMTIz

Это дает мне запрошенный контент, если пароль введен правильно, в противном случае он перенаправляет меня на страницу входа (почему этот маршрутизатор не следует протоколу 401?).

Iиметь другой TPLINK TL-WR841N маршрутизатор, который не принимает учетные данные (в сообщении http) в виде base64 {username: pass} в качестве предыдущего маршрутизатора, но вместо этого он принимает учетные данные в виде base64 (пользователь): md5 (пароль),У меня есть два вопроса об этом маршрутизаторе ( и всех маршрутизаторах в целом )

1) Я хочу знать, как маршрутизатор передает протокол для учетных данных в браузер, чтобы я мог встроить эту вещьв моем приложении. Я проверил сообщения http (в Chrome / Firefox), но не смог найти сообщение о том, где происходит обмен протоколом.

2) При входе в маршрутизатор TPLINK TL-WR841N, в отличие от предыдущей модели,веб-браузер содержит некоторый SessionID в URL, например, URL показывает www.192.168.0.1/SessionID/path/to/resource. Я хотел бы знать, как этот SessionID передается в браузер?

1 Ответ

0 голосов
/ 05 ноября 2019

Люди, которые пишут приложения для обслуживания маршрутизаторов, а также люди, разрабатывающие экраны установки драйверов видеокарт (глядя на вас, AMD), не придерживаются каких-либо рекомендаций, передовых методов или протоколов.

Но онитоже не надо. Они написали приложение, которое использует HTTP, но вы не обязаны использовать весь HTTP. Они пишут как frond-конец, так и back-end, чтобы они могли тесно контролировать свой сервер и свой клиент.

Скорее всего, клиент - это глупая пара HTML-страниц, которая выполняет некоторые запросы с использованием JavaScript,

Если бы они решили, что веб-интерфейс аутентифицируется на сервере с заголовком запроса, который буквально заявляет LetMeIn: true, то это также сработает.

HTTP не требует, чтобы сервердолжен возвращать 401, если этот заголовок отсутствует или содержит false, поэтому они не обязаны.

...