2017-02-03 4 views
0

Wenn ich bei der CSRF-Validierung schalte, erhalte ich diesen Fehler. Ich habe Html::csrfMetaTags() im Hauptlayout und es funktioniert perfekt.YII2: ungültige Anforderung (# 400) Sie konnten Ihre Datenübermittlung nicht überprüfen?

<meta name="csrf-param" content="_csrf-frontend"> 
<meta name="csrf-token" content="QmcxU050NEIzD2AaDScBdxQqHAkFM04XCT9AFhZNQSlyIlISYy1yMg=="> 

Ich benutze ActiveForm und ich überprüft POST Query und festgestellt, dass csrf Informationen korrekt sendet.

_csrf-frontend:Ukp1TC5KYUgaEBQIWwg4cCI7OCZEf1YYERJMfkIuAH84DD8ObQlTEA== 

Meine Config Abschnitt:

'request' => [ 
    'cookieValidationKey' => 'LWCVTaYxV7aK6dqMWNKm1C7HMit6bJKa', 
    'csrfParam' => '_csrf-frontend', 
    'enableCsrfValidation' => true, 
], 

P. S. csrf-Token-Daten in Meta-Namen und Daten in Post-Abfrage ist anders, ist das in Ordnung oder nicht?

+0

Haben Sie Cookies in Ihrem Browser aktiviert oder hat Ihre yii-App eine Sitzung aktiviert? Was passiert, wenn Sie in Ihren Anfrageeinstellungen "enableCookieValidation => true" hinzufügen? –

Antwort

0

Sind Sie sicher, dass Sie die Parameter in jedem Formular senden?

In Ihrem Formular haben Sie einen versteckten Parameter wie folgt hinzuzufügen:

echo Html::hiddenInput(
    Yii::$app->request->csrfParam, 
    Yii::$app->request->csrfToken 
); 

So jede Anforderung die CSRF-Daten empfängt, ich habe nicht auf das Layout Ebene.

+0

Ich benutze ActiveForm zum Generieren von HTML-Code. Und ich überprüfte HTML-Code und ich fand versteckte Felder enthalten csrfToken und csrfParam Daten. Ich überprüfte auch Daten in gesendeter Postabfrage. Es gibt dasselbe - alles ist in Ordnung –

Verwandte Themen