Страница 1 из 1

Content-type: application/json не поддерживается?

Добавлено: 06 сен 2017, 12:55
Iworb
Собственно, столкнулся с тем, что при отправке запроса на сервер с типом application/json серверная часть его не распознает: Request payload игнорируется и тот json, что в нем записан, не попадает в переменные ни $_POST, ни $_REQUEST.
Для примера можно создать локальный домен с index.php следующего вида:
<?php
echo var_dump($_POST);
echo var_dump($_REQUEST);
и послать туда POST запрос с данным заголовком и телом, к примеру
{"a":2}
Для POST запроса использовал Postman, но думаю, что можно и через консоль в браузере повторить его.

Re: Content-type: application/json не поддерживается?

Добавлено: 06 сен 2017, 16:23
Ink0gnit0
Iworb,
<?php
$request = file_get_contents("php://input");
print_r(isset($request ) ? $request  : 'Request  is empty!');
или
$_POST = json_decode(file_get_contents('php://input'), true);
print_r(!empty($_POST) ? $_POST : '$_POST array is empty!');

Re: Content-type: application/json не поддерживается?

Добавлено: 06 сен 2017, 16:41
Iworb
Интересно. Даже не подозревал о существовании такого потока, спасибо.
Действительно payload попадает туда. Собственно, такой тип контента не является нативным и не может быть распознан автоматически?

Re: Content-type: application/json не поддерживается?

Добавлено: 06 сен 2017, 16:46
Ink0gnit0
Увы, нет. Чтобы массив $_POST был заполнен, Content-Type при отправке должен быть application/x-www-form-urlencoded или multipart/form-data.

Re: Content-type: application/json не поддерживается?

Добавлено: 06 сен 2017, 16:55
Iworb
Доступно. Спасибо, буду от этого отталкиваться.