|
Http запрос мобильное приложение |
☑ |
0
rkorsak
16.07.20
✎
10:56
|
День добрый.
Есть мобильное приложение на платформе 8.3.16. Отправляет get запрос через apache 2.2 в ут 10.3 внутри локальной сети.
Обнаружилась следующая проблема:
Мобильное приложение отправляет первый запрос без авторизации, приходит отает 401. Сразу же следующий отправляет с авторизацией, приходит ответ 200
GET /trade/hs/obmen/Product/getProduct HTTP/1.1
User-Agent: 1C+Enterprise/8.3
Host: 192.168.1.22:1891
Connection: Keep-Alive
Accept-Encoding: gzip
HTTP/1.1 401 Unauthorized
Date: Wed, 15 Jul 2020 05:46:39 GMT
Server: Apache/2.2.6 (Win32)
WWW-Authenticate: Basic realm="1C:Enterprise 8.3"
Content-Length: 0
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/plain
GET /trade/hs/obmen/Product/getProduct HTTP/1.1
User-Agent: 1C+Enterprise/8.3
Authorization: Basic 0JDQtNC80LjQvdC40YHRgtCw0YDRgtC+0YA6NjY0NjkxNQ==
Host: 192.168.1.22:1891
Connection: Keep-Alive
Accept-Encoding: gzip
HTTP/1.1 200 OK
Date: Wed, 15 Jul 2020 05:46:39 GMT
Server: Apache/2.2.6 (Win32)
Content-Length: 260825
Keep-Alive: timeout=5, max=99
Connection: Keep-Alive
Content-Type: text/x-json
Текст кода
ЗапросХТТП = Новый HTTPЗапрос(Настройки.Публикация + "/hs/obmen/Product/getProduct");
Соединение = Новый HTTPСоединение(Настройки.Адрес, Настройки.Порт, Настройки.Логин, Настройки.Пароль);
Ответ = Соединение.Получить(ЗапросХТТП);
Может кто сталкивался?
|
|
1
Garykom
гуру
16.07.20
✎
11:06
|
Закомментируй указанный код с авторизацией и запусти свое приложение - 99% что там еще есть код который и делает первый запрос
|
|
2
Garykom
гуру
16.07.20
✎
11:09
|
Ну или вариант не используй встроенную в 1С возможность авторизации Basic
Т.е. логин и пароль не указываешь а просто свой заголовок вставляешь
"Authorization" с нужной строкой "Basic 0JDQtNC80LjQvdC40YHRgtCw0YDRgtC+0YA6NjY0NjkxNQ=="
Это "Basic "+base64(логин+":"+пароль)
|
|
3
rkorsak
17.07.20
✎
11:54
|
(1) точно нет. По отладке иду и смотрю через сниффер запросы. При Соединение.Получить(ЗапросХТТП) отправляет запрос без авторизации приходит 401 и сразу с авторизацией
|
|
4
rkorsak
17.07.20
✎
11:56
|
(2) Помогло. Спасибо.
Поток = Новый ПотокВПамяти;
ЗаписьТекста = Новый ЗаписьТекста(Поток) ;
ЗаписьТекста.Записать(Логин+":"+Пароль);
ЗаписьТекста.Закрыть();
ДвоичныеДанные = Поток.ЗакрытьИПолучитьДвоичныеДанные();
Строка64 = Base64Строка(ДвоичныеДанные);
СтрокаАвторизации = "Basic "+Строка64;
|
|
5
Garykom
гуру
17.07.20
✎
11:58
|
(4) Можно без файловых операций и не учел кодировку, что важно если логин или пароль кириллица
|
|