berezuev
@berezuev
#define TRUE FALSE

Yii2 как принимать сторонние запросы на экшн?

Собственно, система оплаты при проведении оплаты делает редирект с пост-запросом на определенную страницу (экшн)..
Но, т.к. все идет вне домена, я получаю на своем сайте Bad Request (#400) "Не удается проверить данные".

Нагуглил такое решение:
/**
     * @inheritdoc
     */
    public function behaviors()
    {
        return [
            'verbs' => [
                'class' => VerbFilter::className(),
                'actions' => [
                    'checkout' => ['POST'],
                ],
            ],
            'corsFilter' => [
                'class' => \yii\filters\Cors::className(),
                    'cors' => [
                        // restrict access to
                        'Origin' => [
                            'http://somedomain.ru', 'https://anotherdomain.com'],
                        'Access-Control-Request-Method' => ['POST'],
                        // Allow only POST and PUT methods
                        'Access-Control-Request-Headers' => ['X-Wsse'],
                        // Allow only headers 'X-Wsse'
                        'Access-Control-Allow-Credentials' => true,
                        // Allow OPTIONS caching
                        'Access-Control-Max-Age' => 3600,
                        // Allow the X-Pagination-Current-Page header to be exposed to the browser.
                        'Access-Control-Expose-Headers' => ['X-Pagination-Current-Page'],
                    ],
                ],
            ];
    }


Но, как вы уже догадались, оно не помогло.
  • Вопрос задан
  • 309 просмотров
Пригласить эксперта
Ответы на вопрос 2
berezuev
@berezuev Автор вопроса
#define TRUE FALSE
Временным (а может и постоянным) решением стало отключение проверки CSRF-токена.
Ответ написан
qonand
@qonand
Software Engineer
Поскольку Вы передаете данные с помощью POST у Вас в данных запроса в обязательном порядке должен присутствовать CSRF-токен. Эту проблемы Вы можете решить одним из вариантов:
1. Отключить проверку CSRF-токена. Насколько это безопасно сложно сказать, т.к. все зависит от организации Вашей системы.
2. Использовать вместо POST-запроса GET. Если Ваш экшен не меняет статус чего либо этот вариант вполне можно использовать
3. Организовать выдачу CSRF-токена клиентам которые будут обращаться к экшену
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы