Перенапровление c POST на GET

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Аватара пользователя
YiiManDev
Сообщения: 44
Зарегистрирован: 2015.03.26, 11:16

Перенапровление c POST на GET

Сообщение YiiManDev »

Добрый день.
Изображение
Yii2 почему-то делает редирект с поста на гет, не выполняя экшен совсем.
А мне надо POST данные получить. А я не могу. В чем может быть проблема?
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Перенапровление c POST на GET

Сообщение vitalik1183 »

Фильтры установлены? Я про фильтры запроса, поведения точнее.
Yii2!
Аватара пользователя
YiiManDev
Сообщения: 44
Зарегистрирован: 2015.03.26, 11:16

Re: Перенапровление c POST на GET

Сообщение YiiManDev »

vitalik1183 писал(а):Фильтры установлены? Я про фильтры запроса, поведения точнее.
Обычный контроллер. Фильтры не ставил. Контроллер даже пост запросы на не существующие экшены переводит в гет, потом выводит ошибку 404.

Код: Выделить всё

<?php

namespace frontend\modules\games\controllers;

use Yii;
use yii\web\Controller;

class SubscriptionController extends Controller
{
    public function actionSuccesspaid()
    {
        var_dump($_POST); die();
    }
}
 
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Перенапровление c POST на GET

Сообщение lynicidn »

валидация наверное 1 запрос, но так как ответ не валидный, то идет просто лесом
Аватара пользователя
YiiManDev
Сообщения: 44
Зарегистрирован: 2015.03.26, 11:16

Re: Перенапровление c POST на GET

Сообщение YiiManDev »

lynicidn писал(а):валидация наверное 1 запрос, но так как ответ не валидный, то идет просто лесом
Не понял. Можно поподробней?
Аватара пользователя
YiiManDev
Сообщения: 44
Зарегистрирован: 2015.03.26, 11:16

Re: Перенапровление c POST на GET

Сообщение YiiManDev »

Т.е. присылаются не валидные данные, по этому сервер перенаправляет на Гет? Но как исправить? Изначально приходит Пост запрос с данными.
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Перенапровление c POST на GET

Сообщение lynicidn »

включена аякс валидация?
Аватара пользователя
vitalik1183
Сообщения: 1675
Зарегистрирован: 2014.07.01, 08:42

Re: Перенапровление c POST на GET

Сообщение vitalik1183 »

enableCsrfToken как ?
Yii2!
Аватара пользователя
YiiManDev
Сообщения: 44
Зарегистрирован: 2015.03.26, 11:16

Re: Перенапровление c POST на GET

Сообщение YiiManDev »

vitalik1183 писал(а):enableCsrfToken как ?
public $enableCsrfValidation = false; ставлю
Аватара пользователя
YiiManDev
Сообщения: 44
Зарегистрирован: 2015.03.26, 11:16

Re: Перенапровление c POST на GET

Сообщение YiiManDev »

lynicidn писал(а):включена аякс валидация?
Нет
Аватара пользователя
YiiManDev
Сообщения: 44
Зарегистрирован: 2015.03.26, 11:16

Re: Перенапровление c POST на GET

Сообщение YiiManDev »

Наверно дело именно в том Пост запросе который приходит на сервер. Т.к. другие контроллеры его также редеректят на гет.
Аватара пользователя
YiiManDev
Сообщения: 44
Зарегистрирован: 2015.03.26, 11:16

Re: Перенапровление c POST на GET

Сообщение YiiManDev »

Запросы:
Это ответ
Gneral:
Remote Address:46.29.2.42:80
Request URL:http://site.com/games/subscription/successpaid
Request Method:POST
Status Code:301 Moved Permanently
Response Headers
view source
Connection:keep-alive
Content-Length:343
Content-Type:text/html; charset=iso-8859-1
Date:Tue, 08 Sep 2015 12:05:12 GMT
Location:http://www.site.com/index.php/subscription/successpaid
Server:nginx
Это запрос который приходит.
Request Headers
view source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip, deflate
Accept-Language:ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Content-Length:0
Content-Type:application/x-www-form-urlencoded
Cookie:_csrf=c2e3513d0eff1155902f684b638391ca; PHPSESSID=oc9vm4o9rpdggpj01; ispmgr4=siris:ru:4719050; mbar=ispgr-5-all; _gat=1; _ga=GA1.2.141685637.1437647198
Host:site.com
Origin:null
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.85 Safari/537.36
Последний раз редактировалось YiiManDev 2015.09.08, 15:17, всего редактировалось 1 раз.
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Перенапровление c POST на GET

Сообщение lynicidn »

ну нет там редиректа
следовательно запрос аякс
следовательно получает не то что ждет (text вместо json)
следовательно яваскрипт падает
следовательно идет рефреш страницы
следовательно вы нам тут не договариваете
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Перенапровление c POST на GET

Сообщение zelenin »

причем тут аякс/js? у чувака идет редирект с http://site.com/games/subscription/successpaid на http://www.site.com/index.php/subscription/successpaid, потому а) сервер редиректит б) урлменеджер (но он вроде не редиректит)
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Перенапровление c POST на GET

Сообщение lynicidn »

а) был бы вечный редирект
Аватара пользователя
YiiManDev
Сообщения: 44
Зарегистрирован: 2015.03.26, 11:16

Re: Перенапровление c POST на GET

Сообщение YiiManDev »

lynicidn писал(а):а) был бы вечный редирект
Он просто один раз редиректит с POST на GET и все. Дальше бы не было редиректов. Если бы он редиректил с POST на POST то был бы вечный редирект.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Перенапровление c POST на GET

Сообщение zelenin »

lynicidn писал(а):а) был бы вечный редирект
с чего это?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Перенапровление c POST на GET

Сообщение zelenin »

YiiManDev писал(а):
lynicidn писал(а):а) был бы вечный редирект
Он просто один раз редиректит с POST на GET и все. Дальше бы не было редиректов. Если бы он редиректил с POST на POST то был бы вечный редирект.
редирект происходит на другой урл. пост и гет здесь не причем.
Аватара пользователя
mihail_dev
Сообщения: 243
Зарегистрирован: 2013.07.17, 00:51
Откуда: Молдова
Контактная информация:

Re: Перенапровление c POST на GET

Сообщение mihail_dev »

конфиг и контроллер в студию
Изображение
Аватара пользователя
YiiManDev
Сообщения: 44
Зарегистрирован: 2015.03.26, 11:16

Re: Перенапровление c POST на GET

Сообщение YiiManDev »

mihail_dev писал(а):конфиг и контроллер в студию
Обычный контроллер

Код: Выделить всё

<?php
namespace frontend\controllers;
use Yii;
use yii\web\Controller;
class TestController extends Controller
{
    public function actionIndex()
    {
        var_dump($_POST);
    }
}
 
Форма которая передает Пост данные.
Image 3.png
Image 3.png (44.09 КБ) 7311 просмотров
Image 4.png
Image 4.png (88.21 КБ) 7311 просмотров
Конфиг:

Код: Выделить всё

<?php
$config = [
    'homeUrl'=>Yii::getAlias('@frontendUrl'),
    'controllerNamespace' => 'frontend\controllers',
    'defaultRoute' => 'site/index',
    'modules' => [
        'user' => [
            'class' => 'frontend\modules\user\Module',
        ],
        'games' => [
            'class' => 'frontend\modules\games\games',
        ],
        'comments' => 'rmrevin\yii\module\Comments\Module',
    ],
    'components' => [
        'authClientCollection' => [
            'class' => 'yii\authclient\Collection',
        ],
        'errorHandler' => [
            'errorAction' => 'site/error',
        ],
        'user' => [
            'class'=>'yii\web\User',
            'identityClass' => 'common\models\User',
            'loginUrl'=>['/user/sign-in/login'],
            'enableAutoLogin' => true,
        ],
    ]
];

if (YII_ENV_DEV) {
    $config['modules']['gii'] = [
        'class'=>'yii\gii\Module',
        'generators'=>[
            'crud'=>[
                'class'=>'yii\gii\generators\crud\Generator',
                'messageCategory'=>'frontend'
            ]
        ]
    ];
}
return $config; 

Код: Выделить всё

<?php
return [
    'id' => 'frontend',
    'basePath'=>dirname(__DIR__),
    'sourceLanguage'=>'en-US',
    'language'=>'ru-RU',
    'components' => [
        'urlManager'=>require(__DIR__.'/_urlManager.php'),
    ],
]; 

Код: Выделить всё

<?php

use \rmrevin\yii\module\Comments\Permission;

return [
    'class'=>'yii\web\UrlManager',
    'enablePrettyUrl'=>true,
    'showScriptName'=>false,

    'rules'=> [

        '' => 'site/index',

        ['class' => 'common\components\urlRules\ArticleUrlRule'],
        ['class' => 'common\components\urlRules\TeamUrlRule'],


        // Тренер
        'coach-<slug>' => '/games/coach/view',
        // Предстказания

        'forecasters/user-<id:\d+>' => '/games/prediction/user',
        'forecasters/sort-<sort>/p<page>' => '/games/forecasters/index',
        'forecasters/sort-<sort>' => '/games/forecasters/index',
        'forecasters/p<page>' => '/games/forecasters/index',
        'forecasters' => '/games/forecasters/index',
        'prediction' => '/games/prediction/index',
         // Таблица
        'table' => '/games/table/index',
        'table<id:\d+>-<slug>' => '/games/table/table',
         // Календарь
        'calendar' => '/games/calendar/index',
        'calendar<id:\d+>-<slug>' => '/games/calendar/calendar',
         // Матч
        'match-<id:\d+>' => '/games/match/view',

        '<_c:[\w\-]+>/<id:\d+>' => '<_c>/view',
        '<_c:[\w\-]+>' => '<_c>/index',
        '<_c:[\w\-]+>/<_a:[\w\-]+>/<id:\d+>' => '<_c>/<_a>',
        ['pattern'=>'page/<slug>', 'route'=>'page/view']
    ]
];



$AuthManager = \Yii::$app->getAuthManager();
$ItsMyCommentRule = new \rmrevin\yii\module\Comments\rbac\ItsMyComment();

$AuthManager->add($ItsMyCommentRule);

$AuthManager->add(new \yii\rbac\Role([
    'name' => Permission::CREATE,
    'description' => 'Can create own comments',
]));
$AuthManager->add(new \yii\rbac\Role([
    'name' => Permission::UPDATE,
    'description' => 'Can update all comments',
]));
$AuthManager->add(new \yii\rbac\Role([
    'name' => Permission::UPDATE_OWN,
    'ruleName' => $ItsMyCommentRule->name,
    'description' => 'Can update own comments',
]));
$AuthManager->add(new \yii\rbac\Role([
    'name' => Permission::DELETE,
    'description' => 'Can delete all comments',
]));
$AuthManager->add(new \yii\rbac\Role([
    'name' => Permission::DELETE_OWN,
    'ruleName' => $ItsMyCommentRule->name,
    'description' => 'Can delete own comments',
])); 
Ответить