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