关于yii2 Csrf验证问题

WBOY
Release: 2016-06-06 20:35:54
Original
928 people have browsed it

在使用yii2-uploadify时候,上传提交时候
发现返回HTTP400,意思提交的数据不被验证,研究发现是yii的csrf在发挥作用,
在beforeAction中禁用csrf是一种方法,不过我想默认使用csrf功能,我的代码如下

<code>    = $form->field($model,'thumb')->widget(Uploadify::className(),[
        'url'=>\yii\helpers\Url::toRoute(['rotatain/upload']),
        'id'=>'thumb',
        'csrf'=>true,
        'attribute'=>'file',
        'renderTag'=>true,
        'jsOptions'=>[
            'width'=>140,
            'height'=>36,
            'buttonText'=>'上传图片',
            'formData'=>"{". Yii::$app->request->csrfParam .":". Yii::$app->request->getCsrfToken().",PHPSESSID:". Yii::$app->session->get('session_id') ."}",
            //'overrideEvents' => ['onSelectError','onSelect','onDialogClose'],
            'onUploadStart'=>"function (){
                alert($('input[name=_csrf]').val());
                alert($('input[name=getT]').val());
            }",
            'onUploadSuccess'=>"function (file,data,response){
                alert(data)
            }"
        ]
    ]);?>
</code>
Copy after login
Copy after login

发送到一个测试文件输出POST能接受到_csrf,但是还是返回400状态,请问这是怎么问题,如何解决?

<code>"formData":{"PHPSESSID":"8q17070o7drq3536i59cfrs5j7","_csrf":"QmJWY0QzNU0QVwA2HV9YFXYhZjA9XEIIBU9jCwVwDAF2DmEmD30EDg=="}
</code>
Copy after login
Copy after login

这个是生成的额外数据,发现也是正确的,但是csrf验证就是通过不了。

回复内容:

在使用yii2-uploadify时候,上传提交时候
发现返回HTTP400,意思提交的数据不被验证,研究发现是yii的csrf在发挥作用,
在beforeAction中禁用csrf是一种方法,不过我想默认使用csrf功能,我的代码如下

<code>    = $form->field($model,'thumb')->widget(Uploadify::className(),[
        'url'=>\yii\helpers\Url::toRoute(['rotatain/upload']),
        'id'=>'thumb',
        'csrf'=>true,
        'attribute'=>'file',
        'renderTag'=>true,
        'jsOptions'=>[
            'width'=>140,
            'height'=>36,
            'buttonText'=>'上传图片',
            'formData'=>"{". Yii::$app->request->csrfParam .":". Yii::$app->request->getCsrfToken().",PHPSESSID:". Yii::$app->session->get('session_id') ."}",
            //'overrideEvents' => ['onSelectError','onSelect','onDialogClose'],
            'onUploadStart'=>"function (){
                alert($('input[name=_csrf]').val());
                alert($('input[name=getT]').val());
            }",
            'onUploadSuccess'=>"function (file,data,response){
                alert(data)
            }"
        ]
    ]);?>
</code>
Copy after login
Copy after login

发送到一个测试文件输出POST能接受到_csrf,但是还是返回400状态,请问这是怎么问题,如何解决?

<code>"formData":{"PHPSESSID":"8q17070o7drq3536i59cfrs5j7","_csrf":"QmJWY0QzNU0QVwA2HV9YFXYhZjA9XEIIBU9jCwVwDAF2DmEmD30EDg=="}
</code>
Copy after login
Copy after login

这个是生成的额外数据,发现也是正确的,但是csrf验证就是通过不了。

能给看下服务端接收POST的输出结果嘛?_csrf 必须是独立于 $_POST['_csrf'] 而不能是$_POST['xx']['_csrf']

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
About us Disclaimer Sitemap
php.cn:Public welfare online PHP training,Help PHP learners grow quickly!