Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Отправка post запроса из html в 1C и получение результата

Отправка post запроса из html в 1C и получение результата
Я
   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?

Может все неправильно, пните в нужную сторону
 
 Партнерская программа EFSOL Oblako
   ptiz
 
1 - 02.06.21 - 10:25
(0) в файле vrd в папке публикации http-сервиса 1С, где прописан путь к базе, должен быть указан и пользователь 1С, который используется для авторизации
   Gluk
 
2 - 02.06.21 - 10:58
(1) это знаю, не очень хорошо
   lodger
 
3 - 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?
   Gluk
 
4 - 02.06.21 - 11:16
(3) не понял, так и делаю же
   lodger
 
5 - 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);

А результат потом возвращаем браузеру.
   Garykom
 
7 - 02.06.21 - 11:43
(6) вопрос нахера curl когда есть https://www.php.net/manual/ru/function.file-get-contents.php#108309 ?
   fisher
 
8 - 02.06.21 - 11:47
(0) Насколько я понял, по дефолту используется базовая аутентификация http. Прием из (1) позволяет ее отключить.
Чтобы аутентифицироваться по дефолту - нужно в заголовок аутентификации воткнуть пользователя с паролем в Base64. Сек, найду. Недавно на глаза попадалось.
   Юрий Лазаренко
 
9 - 02.06.21 - 11:48
(7) Да в общем-то без разницы.
   Вафель
 
10 - 02.06.21 - 11:50
так это все можно и на жс проделать
   Garykom
 
11 - 02.06.21 - 11:52
(10) угу чтобы юзер логин/пароль от 1С узнал?
   Gluk
 
12 - 02.06.21 - 11:52
(8) это в html? жду
   Gluk
 
13 - 02.06.21 - 11:52
(10) пример скиньте, плз
   Gluk
 
14 - 02.06.21 - 11:53
(11) там еще разобраться надо, для меня не страшно
   Вафель
 
15 - 02.06.21 - 11:54
проще (1) сделать
   Gluk
 
16 - 02.06.21 - 11:55
(15) согласен, а если нужно чтобы кто-то заходил по паролю?
   Вафель
 
17 - 02.06.21 - 11:56
(16) на тот же адрес?
тогда делай 2 публикации
   fisher
 
18 - 02.06.21 - 11:56
(12) Не. Как в html воткнуть заголовок в post-запрос я не знаю. Думаю, это легко гуглится (или легко гуглится что это не сделать).
Но чтобы авторизоваться, тебе необходимо воткнуть заголовок Authorization с содержимым "Basic " и дальше Base64 от строки вида "логин:пароль".
   Gluk
 
19 - 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,
       })
   fisher
 
21 - 02.06.21 - 12:01
Короче, пишут что напрямую из html заголовок не воткнуть. Только через js
   fisher
 
22 - 02.06.21 - 12:11
Но в итоге у тебя ж все равно будет логин пароль фактически в открытом виде в странице присутствовать. Чем такая видимость защиты лучше уж ее сознательно отключить.
   Вафель
 
23 - 02.06.21 - 12:13
(22) ну не совсем в открытом. в формате бэйс 64
   Garykom
 
24 - 02.06.21 - 12:15
это точно форум 1Сников? а то программирование на php и на js обсуждается да еще html
   fisher
 
25 - 02.06.21 - 12:16
(23) Все, кто знает что такое заголовки хттп, знают и что такое basic auth
   fisher
 
26 - 02.06.21 - 12:20
Короче, проще это оформить отдельной публикацией, зарезать по правам, а basic auth отключить. Ну или уже делать полноценную секурность.
Я намедни такое для МП писал. Если обе стороны знают пароль, то можно посоленным хешем от логина:пароля запросы подписывать и уже фиг сломаешь.
   fisher
 
27 - 02.06.21 - 12:22
Хотя опять же, если запрос напрямую со странички генерится - то непонятно какая тут секурность может быть. Это же заведомо открытые данные.
   Gluk
 
28 - 02.06.21 - 12:23
в моем случае открытые логины и пароли не проблема
   fisher
 
29 - 02.06.21 - 12:25
Тут единственный вариант - сама страничка должна отдаваться секурно. Если где-то сверху будет какая-то авторизация перед этой страничкой, а страничка будет отдаваться по https, то не вопрос.
(28) Так а нафига их тогда вообще светить? Отключи авторизацию как в (1) советовали и всего делов.
   Gluk
 
30 - 02.06.21 - 12:26
да, теперь подумаю
 
 


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.