189 похожих чатов

А насколько правильно добавлять какие-то параметры в URL для POST-запроса,

и насколько в общем случае серверы это понимают? Есть необходимость передавать с устройства на сервер некие данные (массив однородных записей), к ним нужно добавить что-то для аутентификации устройства. В устройстве стоит GSM-модем, умеющий только GET, POST и HEAD. Данных несколько килобайт, они бинарные, будут упакованы в protobuf. Обмен ведётся через HTTPS, так что передача аутентификационных данных в запросе считается безопасной. До этого данные только запрашивались с сервера, и имя устройства и "пароль" передавались в GET-запросе. Со стеком технологий на сервере не знаком, но знаю только, что там ASP.NET. Как лучше сделать?
1) Точно так же передавать, но в URL POST-запроса. Я не нашёл ни прямой рекомендации, ни прямого запрета так делать. Остаётся вопрос, поймёт ли это приложение на сервере, но это уже конкретно к серверным разработчикам.
2) Использовать какую-то из стандартных разновидностей HTTP Authentification (можно Basic). По стандарту предполагается запрос-ответная схема, когда мы сначала ломимся на ресурс без пароля и получаем ответ 401 и realm, а затем вторым запросом передаём данные для аутентификации. Так делать не хочется, потому что на модеме каждый https-запрос занимает секунд 10. Можно ли сразу выполнить полезный запрос, если realm заранее известен?
3) Включить имя и пароль в сам protobuf. Концептуально не очень нравится.

4 ответов

8 просмотров

Зависит от прямоты рук того кто писал сервер

если еще интересно. 1. параметры в URL при POST запросе указывать можно. Но это показатель кривого дизайна системы сразу же. Так не делают из-за, хотя бы, понимания CQRS. 2. если используется отдельный готовый закрытый сервер авторизации (судя по авторизации get'ом и терминологии realm'ов) - в один запрос уместить никак не получится, если самописное - делается легко. как вариант можно, чтобы устройство проверяло активна ли сессия перед отправкой у себя - если сервер при авторизации выдал ей expiration claim. Таким образом большинство запросов не будет дублироваться. Если система самописная - проще всего сделать новую ручку на сервере и не париться. Вообще новый микросервис поднять будет проще, чем в модеме ковыряться. 3. нет нужды. можно пометить запрос multipart/form-data; и в другие поля заполнять какую угодно инфу, хоть и пароль. Вообще имя и пароль, а лучше токен, полученный заранее, вписывается обычно в хедер http запроса и никакой проблемы нет

Это называется x-csrf токен

Концептуально шейте jwt в head у вас все равно binary формат

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта