Как отправить post запрос
Перейти к содержимому

Как отправить post запрос

  • автор:

POST-запрос

POST-запрос по своей структуре сложнее GET-запроса : он имеет заголовок и тело. Передать POST-запрос через адресную строку браузера нельзя, требуется специализированный механизм отправки запросов.

POST-запрос может быть предпочтительнее при необходимости отправить в бизнес-процесс большое количество параметров. При помощи POST-запроса их можно передать неограниченное количество. Максимальное количество параметров, которое можно передавать GET-запросом, ограничено максимальной длиной заголовка запроса – от двух тысяч символов в зависимости от используемых веб-сервера и веб-клиента. В большинстве случаев этого более чем достаточно, но если требуется, например, передать в переменную некоторый текст, этого лимита может не хватить.

Кроме того, HTTP-POST запросы не имеют ограничений на тип передаваемых параметров. Возможность использования POST-запросов будет полезна при интеграции системы ELMA с простыми веб-приложениями в случае, если требуется передавать в систему ELMA большой объем данных или файлы.

Простейший способ отправить POST-запрос — использовать HTML форму, для которой указан метод передачи данных «post».

ID Партнера:

Отправка данной формы приведет к запуску бизнес-процесса с токеном 995ea844-74a8-413b-96be-bc92462eff85 на сервере ELMA, расположенном на http://elma.someorg.ru. При этом бизнес-процесс будет запущен с определенными стартовыми параметрами. Перед началом выполнения процесса в его контекст будет загружено пять переменных: Name, Surname, Fathername, Age, Partner.

Возможность запуска бизнес-процессов при помощи POST-запроса имеется только при условии, что процесс был опубликован с корректно сформированным токеном и установленными флажками Запуск из внешних систем и Веб-запрос (POST) в блоке Варианты запуска процесса (рис. 2).

Как отправить post запрос javascript

Для отправки POST/GET запроса (и других) можно использовать Fetch API . Fetch API — это современная альтернатива XMLHttpRequest для работы с асинхронными HTTP запросами. Так, используя метод fetch() и указав необходимые параметры мы можем отправить или получить данные по сети.

// Определяем функцию которая принимает в качестве параметров url и данные которые необходимо обработать: const postData = async (url = '', data = <>) =>  // Формируем запрос const response = await fetch(url,  // Метод, если не указывать, будет использоваться GET method: 'POST', // Заголовок запроса headers:  'Content-Type': 'application/json' >, // Данные body: JSON.stringify(data) >); return response.json(); > 
postData('https://example.com/answer',  answer: 42 >) .then((data) =>  console.log(data); >); 

Отправка POST-запроса в JavaScript как отправка формы

Когда будет речь о перенаправлении браузера на другую страницу, одним из распространенных способов является использование GET-запроса. Он выглядит примерно так:

document.location.href = 'http://example.com/q=a';

Однако, в некоторых случаях, ресурс, к которому происходит обращение, может корректно отвечать только на POST-запросы. Если мы не генерируем такой запрос динамически, то можем использовать HTML-форму следующего вида:

А затем просто отправить эту форму из DOM. Но что если мы хотим использовать JavaScript для отправки такого запроса? Как выглядит код, который позволяет выполнить что-то вроде этого:

post_to_url('http://example.com/', );

Нужно учесть, что требуется решение, которое изменяет текущий URL браузера, аналогично отправке формы. Если это возможно с использованием XMLHttpRequest, то это не очевидно. Это не должно быть асинхронным и использовать XML, поэтому Ajax здесь не подходит.

Лучший кросс-браузерный подход предполагает создание формы с помощью JavaScript, добавление ее в DOM, а затем ее отправку. Вот как это выглядит:

function post_to_url(path, params) < var form = document.createElement('form'); form.method = 'POST'; form.action = path; for(let key in params) < if(params.hasOwnProperty(key)) < var hiddenField = document.createElement('input'); hiddenField.type = 'hidden'; hiddenField.name = key; hiddenField.value = params[key]; form.appendChild(hiddenField); >> document.body.appendChild(form); form.submit(); >

В этом коде создается новая форма с указанным путем и методом POST. Затем, для каждого ключа в переданном параметре, создается новое скрытое поле ввода и добавляется в форму. После этого форма добавляется в тело документа и отправляется. Именно так можно реализовать POST-запрос, похожий на отправку формы, с использованием JavaScript.

Как можно отправить свой POST-запрос?

Всем привет!
Мне нужно отправлять POST-запросы с разными данными на сервер одной игры и посмотреть на результаты, которые он будет возвращать. Как это сделать? Ничего незаконного, я просто эээээээкссспериментирую)
Пытался отправлять через HTML-форму с POST-методом, но сервер походу блокирует вхождения через браузер.

  • Вопрос задан более года назад
  • 348 просмотров

Комментировать
Решения вопроса 1

vabka

Токсичный шарпист

Вместо браузера используй те инструменты, которые для этого предназначены.
Уже названный консольный curl вполне подходит для этого.
Если консоль для тебя не очень привычный инструмент — попробуй postman

Ответ написан более года назад
Нравится 3 7 комментариев
0x0000002F @0x0000002F Автор вопроса

61ec3ff96cbe1053833841.png

А что если мне нужно отправить еще и определенные заголовки, параметры?
Да, их можно вроде настроить на postman, но у меня их довольно много.

vabka

0x0000002F, руками заполняешь все нужные заголовки.
На твоём скрине не видно какие именно нужны.
0x0000002F @0x0000002F Автор вопроса

Василий Банников, тогда добавлю два скрина.
В сетях не шарю, по этому замазал некоторые поля наугад, чтобы, мало ли, не вычислили))
1 — данные о Wireshark-фрейме; Ethernet; IP
2 — TCP; HTTP; POST
61ec5091e3daa536162736.png 61ec50972e32d326953595.png

vabka

0x0000002F, тебя должны интересовать только HTTP-заголовки. Всё остальное — это идёт ниже уровнем и значения не имеет.
Из заголовков тут важный только Content-Type и Accept (остальные, типа Host и Content-Length служебные и автоматически подставляются клиентом)

Что кстати скрывается за открывашкой напротив POST /database/accounts/. ?

0x0000002F @0x0000002F Автор вопроса

Василий Банников, нет, не вышло. Почему-то постоянно выдает 403 ошибку. Пытался и на питоне через requests, то же самое. Хотя почему-то игра может подключиться

Изменено. Выяснил, что при своем запросе присутствуют лишние заголовки.

vabka

Rubix, открывашка — это треугольник слева, при нажатии на который появляется скрытое содержимое.
Ну почему 403 сложно сказать.
Я бы ещё попробовал вместо wireshark использовать более специализированные инструменты, типа charles

0x0000002F @0x0000002F Автор вопроса

Василий Банников, хах, про открывашку буду знать))
В общем, получилось. Я обнулил некоторые заголовки

import requests url = 'http://www.boomlings.com/database/accounts/loginGJAccount.php'; headers = < 'User-Agent': '', 'Accept-Encoding': '', 'Connection': '' >data = < 'udid': '. ', 'userName': '. ', 'password': '. ', 'secret': '. ' >x = requests.post(url, headers=headers, data=data); print(x.content);

Ответы на вопрос 1

curl — самый продвинутый инструмент, есть как консольная утилита так и библиотека, есть практически для всех языков

Помимо данных POST есть еще http заголовки, в которых может содержаться данные об авторизации (например цифровая подпись) или сессия.. . возможно браузер добавил ненужный тег (маловероятно, скорее недостает нужного)

Еще момент, у post есть разные формы передачи данных, грубо говоря загрузка файла или именованные атрибуты (это классическая html форма)

Ответ написан более года назад
Нравится 1 2 комментария
0x0000002F @0x0000002F Автор вопроса

Я мониторил запрос в Wireshark. Я вижу в запросе все пакеты, которые отправляются. То есть там есть и заголовки. Мне нужно оставить всё, кроме нескольких значений и потом отправить вручную. Например, udid (Уникальный ID устройства), логин, пароль.

0x0000002F, ну у тебя вся необходимая информация на руках есть, какие проблемы то
Ваш ответ на вопрос

Войдите, чтобы написать ответ

сети

  • Компьютерные сети

Как в наше время получить статический ip через прокси?

  • 1 подписчик
  • час назад
  • 30 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *