lj19870908 2016-07-13 16:58:41 12919次浏览 8条评论 11 6 0

第一种解决办法是关闭Csrf

public function init(){
    $this->enableCsrfValidation = false;
}

第二种解决办法是在form表单中加入隐藏域

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

第三种解决办法是在AJAX中加入_csrf字段

var csrfToken = $('meta[name="csrf-token"]').attr("content");
$.ajax({
  type: 'POST',
  url: url,
  data: {_csrf:csrfToken},
  success: success,
  dataType: dataType
});

备注:如果你的页面没有form的话,ajax的post提交是没问题的,用ajax的post提交会自动产生_csrf
如果页面有form 尤其是有file的话 ajax的post是不可以的,必须用get。

觉得很赞
  • 评论于 2016-11-23 19:09 举报

    感谢楼主热心分享 解决了我的问题 谢谢

  • 评论于 2017-04-02 16:57 举报

    初学的时候 让我头疼的 可后来 我也这么解决的

  • 评论于 2017-05-10 09:28 举报

    不行的吧,我加上去都没用,还是400

    3 条回复
    评论于 2017-05-15 10:33 回复

    怎么可能,都用过N多地方了,怎么可能不管用

    评论于 2017-05-31 16:30 回复

    在html 添加隐藏域 再用js 获取该值一起提交试试,我这样处理是可以的

    评论于 2017-09-13 23:09 回复

    获取了还不不管用啊 出现了404

  • 评论于 2017-05-25 10:39 举报

    给你点个赞

  • 评论于 2017-05-31 16:28 举报

    验证了,可以,感谢分享,提交的时候将_csrf 参数传入即可(我用的是js post 上传图片)

          (html代码) <input name="_csrf" type="hidden" id="_csrf" value="<?=  Yii::$app->request->csrfToken; ?>">
    
         (js代码= $('#_csrf').val();
            $('.btn-upload').upload({
                url: _root_host + 'levis_admin/base/upload-for-qiniu',
                ext: ['image/png', 'image/jpeg'],
                params: 'exts[]:png,exts[]:jpg,_csrf:' + csrfToken,//todo 注意加上_csrf 参数 否则请求http 400
                error:function(data) {
                    tips.init('error', data);
                },
                success:function(data, _this) {
                    $('.l-img-show').find('img').attr('src', data.url+'?imageView2/2/w/200');
                    $('#image').val(data.key);
                }
            });
    
  • 评论于 2017-09-13 23:11 举报

    ![9824GBPNV`[V7NX}%QUSBPF.png](/uploads/images/201709/13231122299_thumb.png "9824GBPNV`[V7NX}%QUSBPF.png")

  • 评论于 2017-10-05 12:46 举报

    ajax的post提交不管有没有form表单都需要_csrf,我用get就可以成功,post需要_csrf

  • 评论于 2017-11-28 14:48 举报

    感谢楼主,感谢各位好人,搞定!

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