Перейти к содержимому

Через что можно отправить post запрос

  • автор:

Как отправить 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); >); 

HTTP-запрос методом POST.

Кроме метода GET, который мы рассмотрели в предыдущей заметке, существует еще один метод отправки запроса по протоколу HTTP – метод POST. Метод POST тоже очень часто используется на практике.

http метод post

Если, для того, чтобы обратиться к серверу методом GET, нам достаточно было набрать запрос в URL-адрес, то в методе POST все работает по другому принципу.

Для того, чтобы выполнить этот вид запроса, нам необходимо нажать на кнопку с атрибутом type=»submit», которая расположена на веб-странице. Обратите внимание, что эта кнопка расположена в элементе , у которого установлен атрибут method со значением post.

Рассмотрим этот HTML-код:

 
Введите текст:

метод post

Если пользователь введет в текстовое поле какой-либо текст и нажмет на кнопку «Отправить», то на сервер будет отправлена переменная text со значением того содержимого, которое ввел пользователь. Эта переменная будет отправлена методом POST.

Если в форме написать так:

То данные будут отправляться методом GET.

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

Еще одно отличие метода POST от GET, метод POST скрывает все передаваемые им переменные и их значения, в своём теле (Entity-Body). В случае с методом GET они хранились в строке запроса (Request-URI).

Вот пример запроса, выполненного методом POST:

POST / HTTP/1.0\r\n Host: www.site.ru\r\n Referer: http://www.site.ru/index.html\r\n Cookie: income=1\r\n Content-Type: application/x-www-form-urlencoded\r\n Content-Length: 35\r\n \r\n login=Dima&password=12345

Таким образом, передавая данные методом POST, их будет намного труднее перехватить злоумышленнику, т.к. они скрыты от непосредственного просмотра, поэтому метод передачи данных методом POST считается более безопасным способом.

Кроме того, методом POST можно передавать не только текст, но и мультимедиа данные (картинки, аудио, видео). Существует специальный параметр Content-Type, который определяет тот вид информации, который необходимо передать.

Ну и, наконец, чтобы на сервере получить данные, которые были переданы этим методом, используется переменная POST.

Вот пример обработки на языке PHP:

Все мои уроки по серверному программированию здесь.

Как отправить HTTP запрос методом POST на URL через PHP?

Tyranron

Действительно, за время, которое потратили на создание вопроса, Вы могли без проблем найти интересующую Вас информацию в любом поисковике.

Но раз вопрос уже задан, то должен быть и ответ(ы).
Собственно, @OnYourLips дал ссылку на хороший фреймворк, но если нет смысла тащить в проект/скрипт целый фреймворк ради одного запроса, к примеру, то логичнее воспользоваться упомянутым CURL. В Вашем случае сценарий использования CURL будет выглядеть примерно следующим образом:

$myCurl = curl_init(); curl_setopt_array($myCurl, array( CURLOPT_URL => 'http://target.site.com/form.php', CURLOPT_RETURNTRANSFER => true, CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query(array(/*здесь массив параметров запроса*/)) )); $response = curl_exec($myCurl); curl_close($myCurl); echo "Ответ на Ваш запрос: ".$response;

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

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

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

Комментировать
Решения вопроса 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, ну у тебя вся необходимая информация на руках есть, какие проблемы то
Ваш ответ на вопрос

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

windows

  • Windows
  • +1 ещё

Где найти список созданных сетей Windows 10?

  • 1 подписчик
  • вчера
  • 104 просмотра

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

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