Имя: Пароль:
1C
1С v8
Ошибка 301 при отправлении данных методом POST через HTTP на сайт
0 JamesStep
 
10.08.22
13:25
При отправлении запроса на сайт который находится на локальном хостинге, приходит код 200, все отлично, вот пример кода
&НаКлиенте
Процедура Вариант1(Команда)
    СтрокаJSON = "test";

    HTTPСоединение = Новый HTTPСоединение("localhost", 80);
    HTTPЗапрос = Новый HTTPЗапрос("index.php");
    HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    HTTPЗапрос.УстановитьТелоИзСтроки("param=" + СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

    Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);  

    Сообщить("Код результата: " + Ответ.КодСостояния);
    Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8"));
    
КонецПроцедуры
   Но при отправлении такого же запроса на сайт, приходит код 301, то есть перенаправление на другую страницу, пробовал обрабатывать перенаправление, все так же
   возникает ошибка, пример кода прикрепляю ниже
&НаКлиенте
Процедура Вариант1(Команда)
    СтрокаJSON = "test";

    HTTPСоединение = Новый HTTPСоединение("esmedlab.ru", 80);
    HTTPЗапрос = Новый HTTPЗапрос("index.php");
    HTTPЗапрос.Заголовки.Вставить("Content-type", "application/x-www-form-urlencoded; charset=utf-8");
    HTTPЗапрос.УстановитьТелоИзСтроки("param=" + СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);

    Ответ = HTTPСоединение.ОтправитьДляОбработки(HTTPЗапрос);  

    Сообщить("Код результата: " + Ответ.КодСостояния);
    Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8"));
    
КонецПроцедуры
    Пробовал использовать другие заголовки, ничего не изменяется, моя задача просто отправить строку на сайт POST запросом и получить ее через PHP
За­просPOST.За­го­лов­ки.Вста­вить("Content-​type", "application/x-​www-​form-​urlencoded");
За­просPOST.За­го­лов­ки.Вста­вить("Content-​type", "application/x-​www-​form-​urlencoded; charset=utf-8");
За­просPOST.За­го­лов­ки.Вста­вить("Content-​type", "application/json");
За­просPOST.За­го­лов­ки.Вста­вить("Content-​type", "application/json; charset=utf-8");
1 lodger
 
10.08.22
14:16
(0) добро пожаловать в интернет.
нынче 301 и тому подобные финты сплошь и рядом.
читать https://infostart.ru/public/1324110/ до просвящения
2 Kassern
 
10.08.22
14:25
(0) Вот так попробуйте:
СтрокаJSON = "test";
    Соединение=Новый HTTPСоединение("esmedlab.ru");
    HTTPЗапрос=Новый HTTPЗапрос("/index.php");
    HTTPЗапрос.УстановитьТелоИзСтроки("param=" + СтрокаJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать);
    Заголовки=Новый Соответствие;
    Заголовки.Вставить("Content-​type", "application/json");
    HTTPЗапрос.Заголовки=Заголовки;
    Ответ=Соединение.ВызватьHTTPМетод("POST",HTTPЗапрос);
3 Kassern
 
10.08.22
14:26
У меня ответ 200 приходит
4 JamesStep
 
10.08.22
14:39
Да, знаю, прошлый код тоже заработал, я отключил перенаправление на самом хостинге сайта, "Использовать безопасное соединение https://" но возникла другая проблема теперь при отправлении  POST запроса я в php файле index.php не получаю пустой массив @_POST, хотя судя по 1с строка туда прилетает, код 200, прикрепляю код
&НаКлиенте
Процедура Команда1(Команда)
    
    
    Сообщение = Новый СообщениеПользователю;
    
    Сервер = "esmedlab.ru";
    Попытка
    
        Соединение = Новый HTTPСоединение(Сервер);
    
    Исключение
        Сообщение.Текст = ОписаниеОшибки();
        Сообщение.Сообщить();
        Возврат;
    КонецПопытки;
    
    АдресРесурса = "/index.php";
    Заголовки = Новый Соответствие;
    

    Заголовки.Вставить("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
    
    HTTPЗапрос = Новый HTTPЗапрос(АдресРесурса, Заголовки);

    Строка = "test";
    

    HTTPЗапрос.УстановитьТелоИзСтроки("param=" + Строка, КодировкаТекста.UTF8);
    
    Попытка

        Соединение.ОтправитьДляОбработки(HTTPЗапрос);
        Ответ = Соединение.ОтправитьДляОбработки(HTTPЗапрос);  
        Сообщить("Код результата: " + Ответ.КодСостояния);
        Сообщить("Ответ: " + Ответ.ПолучитьТелоКакСтроку("UTF-8"));

    Исключение
        Сообщение.Текст = ОписаниеОшибки();
        Сообщение.Сообщить();
        Возврат;
    КонецПопытки;

КонецПроцедуры

И код PHP из index.php

<?php
echo '<pre>';
print_r($_POST);
echo '</pre>';
echo $_POST['param']
5 JamesStep
 
10.08.22
14:41
Так же вот ответ, который приходит из 1с, здесь явно указано что [param] => test, но при обновлении страницы я этого не вижу в браузере

Ответ: test<pre>Array
(
    [param] => test
)
</pre><!doctype html>
<html lang="en">
  <head>
    <link rel="stylesheet" href="css\style.css">
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Медицинская лаборатория ЭС-МЕДЛАБ</title>
    
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous">
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100;0,300;0,400;0,500;0,700;0,900;1,100;1,300;1,400;1,500;1,700;1,900&&display=swap" rel="stylesheet">
  </head>
  <body class = "body">
  
<header class="container-fluid">
            <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png">
            <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png">
            <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png">
            <link rel="manifest" href="/site.webmanifest">
        <div class="container">

            <div class="row">

                <div class="col-4">  
                    <p class="logo">
                        <a href="/">
                            <img src="399019_8414.webp" alt="Логотип">
                        </a>
                    </p>
                    <h3 class="logo-text" >
                        <a href="/">Выполнение лабораторных исследований</a>
                    </h3>
                </div>
                <nav class="col-8">
                    <ul>
                        <li>
                            <div class="header-menu">
                                <a class="header-menu-a" href="index.php">
                                    ГЛАВНАЯ
                                    </a>
                          </div>
                        </li>
                        <li>
                            <div class="header-menu">
                                    <a class="header-menu-a" href="specialisty.php">
                                    СПЕЦИАЛИСТЫ
                                    </a>

                            </div>
                        </li>
                        <li>
                            <div class="header-menu">
                                <a class="header-menu-a"  href="o-nas.php">
                                    О НАС
                                    </a>
                            </div>
                        </li>
                        <li>
                            <div class="header-menu">
                                <a class="header-menu-a" href="kontakty.php">
                                        КОНТАКТЫ
                                    </a>
                            </div>
                        </li>
                        <li>
                          
                                <!--   -->

                                    <div class="header-menu">
                                        <a class="header-menu-a" href="cabinet.php">
                                            КАБИНЕТ
                                            </a>
                                    </div>
                                    
                                <!--  -->
                              
                            
                        </li>
                    </ul>  
                </nav>

            </div>

        </div>

    </header>

<div>
    <div id="carouselExampleCaptions" class="carousel slide" data-bs-ride="false">
        <div class="carousel-indicators">
        <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
        <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="1" aria-label="Slide 2"></button>
        <button type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide-to="2" aria-label="Slide 3"></button>
        </div>
        <div class="carousel-inner">
        <div class="carousel-item active">
            <img src="1.jpg" class="d-block w-100" alt="...">
            <div class="carousel-caption d-none d-md-block">
            <h5 class="carusel-text">ЭС-МЕДЛАБ ДЛЯ ВАШЕГО ЗДОРОВЬЯ</h5>
            <h5 class="carusel-text">Наш приоритет!</h5>
            </div>
        </div>
        <div class="carousel-item">
            <img src="img_news_dif_1.jpg" class="d-block w-100" alt="...">
            <div class="carousel-caption d-none d-md-block">
            <h5 class="carusel-text" >Second slide label</h5>
            <p>Some representative placeholder content for the second slide.</p>
            </div>
        </div>
        <div class="carousel-item">
            <img src="2.jpg" class="d-block w-100" alt="...">
            <div class="carousel-caption d-none d-md-block">
            <h5 class="carusel-text">Third slide label</h5>
            <p>Some representative placeholder content for the third slide.</p>
            </div>
        </div>
        </div>
        <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="prev">
        <span class="carousel-control-prev-icon" aria-hidden="true"></span>
        <span class="visually-hidden">Previous</span>
        </button>
        <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleCaptions" data-bs-slide="next">
        <span class="carousel-control-next-icon" aria-hidden="true"></span>
        <span class="visually-hidden">Next</span>
        </button>
    </div>
</div>
  <!-- Карусель конец -->
  
  <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-A3rJD856KowSb7dwlZdYEkO39Gagi7vIsF0jrRAoQmDKKtQBHUuLZ9AsSv4jD4Xa" crossorigin="anonymous"></script>

  </body>

</html>
6 СеменовСемен
 
10.08.22
14:42
https же наверняка
7 JamesStep
 
10.08.22
14:46
(6) В смысле https?
8 СеменовСемен
 
10.08.22
14:53
(7) кури гугл как подключиться по хттпс
9 JamesStep
 
10.08.22
14:55
(8) Да я по http подключился уже, код 200 приходит, только данные в самом php не видны
10 Fram
 
10.08.22
15:31
(5) ты пытаешься увидеть post запрос посланныйиз 1с обновив страницу в браузере?
11 Fram
 
10.08.22
15:32
(10)+ Когда обновляешь страницу в браузере как думаешь что происходит?
12 JamesStep
 
10.08.22
15:44
(11) То есть при обновлении страницы в браузере у меня слетает запрос посланный из 1с и данные постоянно обнуляются? Вы предлагаете записывать эти данные как только массив заполниться и потом выводить? Не совсем понимаю вас
13 Fram
 
10.08.22
15:57
(12) когда ты обновляешь страницу браузер посылает get запрос на веб сервер и веб сервер, веб сервер выполняет у себя там php код и отправляет ответ браузеру.
14 Fram
 
10.08.22
15:59
Когда ты о управляешь запрос из 1с происходит тоже самое, только браузером служит 1с
15 Fram
 
10.08.22
15:59
*отправляешь
16 Fram
 
10.08.22
16:01
Данные полученные от 1с на стороне веб сервера надо сохранять, а при запросе из браузера соответственно читать и вставлять в страницу
17 Fram
 
10.08.22
16:05
Вы 1с программист или веб программист?