Имя: Пароль:
1C
1С v8
Отправка 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
да, теперь подумаю