Действие Yii1 не получает $ _POST от почтальона - PullRequest
2 голосов
/ 05 августа 2020

Я использую Yii 1 и тестирую API, над которым я работаю, и когда я отправляю POST на этот URL

https://blabla.com/products/report/notification

Я ничего не получаю на почтальоне

Мои фильтры

public function filters()
    {
        return array(
            'accessControl', // perform access control for CRUD operations
            'postOnly + delete', // we only allow deletion via POST request
        );
    }

Мое действие

public function actionnotification() {

        print_r($_POST);
        // print_r(Yii::app()->request->getPost('report_id')); //this didn't work either
        die;
}

URL-адрес правильный, и если я echo 'hi'; в действии выше, он echo привет.

и мои правила:

public function accessRules()
    {
        return array(
            array('allow',  // allow all users to perform 'index' and 'view' actions
                'actions'=>array('notification'),
                'users'=>array('*'),
            );
     }

Вот мой экспортированный cURL от почтальона

curl -X POST \
  https://blabla.com/products/report/notification \
  -H 'Accept: */*' \
  -H 'Accept-Encoding: gzip, deflate' \
  -H 'Cache-Control: no-cache' \
  -H 'Connection: keep-alive' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  -H 'Cookie: PHPSESSID=puevhejh61fg4f0qtc52nbg3jm' \
  -H 'Postman-Token: 4fb0526b-f26e-4802-bf13-8361f65a26af,b610902b-25f1-4eb9-9ce6-cfddec164788' \
  -H 'Referer: https://blabla.com/products/report/notification' \
  -H 'User-Agent: PostmanRuntime/7.18.0' \
  -H 'cache-control: no-cache' \
  -d 'report_id=123131231&status_id=1'

Когда я меняю его на params and GET, он работает, но POST, body x-www-form-urlencoded и GET, body x-www-form-urlencoded не работают, что-то мне здесь не хватает? Спасибо

1 Ответ

0 голосов
/ 05 августа 2020

Попробуйте вместо этого отправить данные POST в теле. Я обычно использую методы Yii вместо $ _POST или $ _GET: https://www.yiiframework.com/doc/guide/2.0/en/runtime-requests

Edit: Вот моя конфигурация почтальона для отправки запросов POST postman

Edit2: В файле конфигурации вы должны добавить к компонентам / запросам свойство с именем enableCsrfValidation и установить для него значение false. Я оставлю тебе свой:

'components' => [
    'request' => [
        'cookieValidationKey' => {key},
        'enableCsrfValidation' => false
    ],
...
...