|   |   | 
| 
 | Отправка 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 | 
        да, теперь подумаю     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |