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 ответов

6 просмотров

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

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

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

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

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

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

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Карта сайта