|
Отправка post запроса из html в 1C и получение результата | ☑ | ||
---|---|---|---|---|
0
Gluk
02.06.21
✎
09:52
|
Не знаю html, php, разбираюсь.
Формирую POST запрос в html: <form action="http://<http сервис>" method="post" name="test"> <input type="text" placeholder="введите текст" name="edit" required="" autofocus=""> <button>Сформировать</button> работает, но требует авторизации, чем можно авторизироваться? В ответ на этот запрос формирую и возвращаю файл excel, как его можно получить и открыть в html? Может все неправильно, пните в нужную сторону |
|||
1
ptiz
02.06.21
✎
10:25
|
(0) в файле vrd в папке публикации http-сервиса 1С, где прописан путь к базе, должен быть указан и пользователь 1С, который используется для авторизации
|
|||
2
Gluk
02.06.21
✎
10:58
|
(1) это знаю, не очень хорошо
|
|||
3
lodger
02.06.21
✎
11:03
|
(0) не проще ли сперва выполнить Пост
https://helpme1c.ru/rabota-s-http-zaprosami-get-i-post-v-yazyke-1s-8-3-8-2-v-primerax а потом показывать\открывать excel? |
|||
4
Gluk
02.06.21
✎
11:16
|
(3) не понял, так и делаю же
|
|||
5
lodger
02.06.21
✎
11:35
|
(4) зачем тебе html? делай запрос как в (3)
|
|||
6
Юрий Лазаренко
02.06.21
✎
11:35
|
(0) Мы в таких случаях делаем php-скрипт, который дергаем из html. В скрипте собираем переданные html-ом параметры, создаем CURL, кладем в него параметры и добавляем логин и пароль пользователя 1С, под которым надо авторизоваться:
$ch = curl_init(); curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($ch, CURLOPT_USERPWD, $user1C . ":" . $pass1C); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); А результат потом возвращаем браузеру. |
|||
7
Garykom
гуру
02.06.21
✎
11:43
|
(6) вопрос нахера curl когда есть https://www.php.net/manual/ru/function.file-get-contents.php#108309 ?
|
|||
8
fisher
02.06.21
✎
11:47
|
(0) Насколько я понял, по дефолту используется базовая аутентификация http. Прием из (1) позволяет ее отключить.
Чтобы аутентифицироваться по дефолту - нужно в заголовок аутентификации воткнуть пользователя с паролем в Base64. Сек, найду. Недавно на глаза попадалось. |
|||
9
Юрий Лазаренко
02.06.21
✎
11:48
|
(7) Да в общем-то без разницы.
|
|||
10
Вафель
02.06.21
✎
11:50
|
так это все можно и на жс проделать
|
|||
11
Garykom
гуру
02.06.21
✎
11:52
|
(10) угу чтобы юзер логин/пароль от 1С узнал?
|
|||
12
Gluk
02.06.21
✎
11:52
|
(8) это в html? жду
|
|||
13
Gluk
02.06.21
✎
11:52
|
(10) пример скиньте, плз
|
|||
14
Gluk
02.06.21
✎
11:53
|
(11) там еще разобраться надо, для меня не страшно
|
|||
15
Вафель
02.06.21
✎
11:54
|
проще (1) сделать
|
|||
16
Gluk
02.06.21
✎
11:55
|
(15) согласен, а если нужно чтобы кто-то заходил по паролю?
|
|||
17
Вафель
02.06.21
✎
11:56
|
(16) на тот же адрес?
тогда делай 2 публикации |
|||
18
fisher
02.06.21
✎
11:56
|
(12) Не. Как в html воткнуть заголовок в post-запрос я не знаю. Думаю, это легко гуглится (или легко гуглится что это не сделать).
Но чтобы авторизоваться, тебе необходимо воткнуть заголовок Authorization с содержимым "Basic " и дальше Base64 от строки вида "логин:пароль". |
|||
19
Gluk
02.06.21
✎
11:56
|
(5) нужно все равно зайти в 1С, взять лицензию
|
|||
20
Вафель
02.06.21
✎
11:59
|
let url = 'http://eu.httpbin.org/basic-auth/user/passwd';
let username = 'user'; let password = 'passwd'; let headers = new Headers(); headers.append('Authorization', 'Basic ' + btoa(username + ":" + password)); fetch(url, {method:'POST', headers: headers, }) |
|||
21
fisher
02.06.21
✎
12:01
|
Короче, пишут что напрямую из html заголовок не воткнуть. Только через js
|
|||
22
fisher
02.06.21
✎
12:11
|
Но в итоге у тебя ж все равно будет логин пароль фактически в открытом виде в странице присутствовать. Чем такая видимость защиты лучше уж ее сознательно отключить.
|
|||
23
Вафель
02.06.21
✎
12:13
|
(22) ну не совсем в открытом. в формате бэйс 64
|
|||
24
Garykom
гуру
02.06.21
✎
12:15
|
это точно форум 1Сников? а то программирование на php и на js обсуждается да еще html
|
|||
25
fisher
02.06.21
✎
12:16
|
(23) Все, кто знает что такое заголовки хттп, знают и что такое basic auth
|
|||
26
fisher
02.06.21
✎
12:20
|
Короче, проще это оформить отдельной публикацией, зарезать по правам, а basic auth отключить. Ну или уже делать полноценную секурность.
Я намедни такое для МП писал. Если обе стороны знают пароль, то можно посоленным хешем от логина:пароля запросы подписывать и уже фиг сломаешь. |
|||
27
fisher
02.06.21
✎
12:22
|
Хотя опять же, если запрос напрямую со странички генерится - то непонятно какая тут секурность может быть. Это же заведомо открытые данные.
|
|||
28
Gluk
02.06.21
✎
12:23
|
в моем случае открытые логины и пароли не проблема
|
|||
29
fisher
02.06.21
✎
12:25
|
Тут единственный вариант - сама страничка должна отдаваться секурно. Если где-то сверху будет какая-то авторизация перед этой страничкой, а страничка будет отдаваться по https, то не вопрос.
(28) Так а нафига их тогда вообще светить? Отключи авторизацию как в (1) советовали и всего делов. |
|||
30
Gluk
02.06.21
✎
12:26
|
да, теперь подумаю
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |