jason_king 2015-07-27 11:59:40 24822次浏览 8条评论 4 7 0

我用Yii2.0做的后台接口,我们的移动开发人员请求我的接口时,统一用的post方式,那么问题来了,在浏览器直接输入接口地址是可以获取返回结果的,但是用post方式不可以,一直报404。郁闷哈!分析下吧,浏览器直接输入,是get方式,那是不是我的后台做了什么请求限制,不允许post请求呢?检查后,没有写任何与此相关的代码。那就只能去查Yii有没有默认的限制了,差过后,得知若不做修改,Yii默认是没有什么限制的,但是对于post请求,是有一个CSRF验证的。我们只需要把这个验证关掉,就可以post访问了。
就是这一句 'enableCsrfValidation' => false,代码如下:

$config = [
    'components' => [
        'db' => [
            'class' => 'yii\db\Connection',
            'dsn' => 'mysql:host=xxx;dbname=xxx',
            'username' => 'xxx',
            'password' => 'xxx',
            'charset' => 'utf8',
        ],
        'request' => [
            // !!! insert a secret key in the following (if it is empty) - this is required by cookie validation
            'cookieValidationKey' => '35xxxsMx_h6VqgeMM9zeaaaTnss0EDsC',
            'enableCookieValidation' => false,
            'enableCsrfValidation' => false,
        ],
    ],
];
觉得很赞
  • 评论于 2015-07-27 14:22 举报

    确实有此问题的,取消掉验证就可以了

  • 评论于 2015-07-27 16:13 举报

    是的,我前天也遇到这个问题, 检查好长时间,才找到解决办法的。我是在控制器类下面直接加了这句话:
    public $enableCsrfValidation = false;

    1 条回复
    评论于 2015-08-20 11:14 回复

    嗯,这个不错,我可以区别对对待,某些不需要验证的controller我就可以设置取消验证。感谢指点。

    觉得很赞
  • 评论于 2015-07-30 09:30 举报

    取消后还怎么使用yii的好东西?到我的教程中看看吧http://www.yiichina.com/tutorial/449

    4 条回复
    评论于 2015-08-20 11:04 回复

    我看了你的文章,现在遇到一个问题,如果我是用app post方式访问我的接口,这个csrfToken app怎么发送给我,因为app本身不知道这个csrfToken的值啊?

    评论于 2015-08-21 10:08 回复

    如果是做APP的接口,为什么不使用RESTFul?

    评论于 2015-08-27 17:05 回复

    这个RESTFul是什么啊?我没用过啊,刚自学Yii2,不太会用。

    评论于 2015-08-27 20:35 回复

    很多大平台都用这个来开发API接口

  • 评论于 2015-07-31 09:45 举报

    改为false首先你要明白这个true是代表什么意思,这句话是为了防止CSRF攻击,最好的解决方法是在表单内部加入

    ”<input name="_csrf" type="hidden" id="_csrf" value="<?= Yii::$app->request->csrfToken ?>">“,
    }
    

    只要加了这个隐藏input就可以了,前后台都递名片这样就认识了

    2 条回复
    评论于 2015-08-20 11:01 回复

    哇,感谢大神,你的做法确实是最好的

    评论于 2015-11-06 16:37 回复

    呵呵,没事,有些东西有它存在的道理

  • 评论于 2016-08-13 15:22 举报

    楼主,我也出现了这个问题,但是按照你的思路每解决,
    想问下还有别的方法没。。。。

    1 条回复
    评论于 2017-09-07 16:36 回复

    朋友 ,你的问题后来解决了吗,我也遇到这个问题

  • 评论于 2017-08-25 17:29 举报

    你确定是404错误?

  • 评论于 2018-07-09 11:18 举报

    老老实实按官方的表单构建来做就莫闷太

  • 评论于 2018-08-13 19:15 举报

    有没有做过401错误的

您需要登录后才可以评论。登录 | 立即注册