【发布时间】:2021-12-04 17:27:57
【问题描述】:
我的日志文件中有很多此类错误
2021-10-17 15:06:39 [60.54.140.90][1550][sf4vnas08uip2fd2avrqkdstd0][error][yii\web\HttpException:400] yii\web\BadRequestHttpException: Unable to verify your data submission. in /var/www/html/vendor/yiisoft/yii2/web/Controller.php:218
Stack trace:
#0 /var/www/html/vendor/yiisoft/yii2/base/Controller.php(179): yii\web\Controller->beforeAction()
#1 /var/www/html/vendor/yiisoft/yii2/base/Module.php(534): yii\base\Controller->runAction()
#2 /var/www/html/vendor/yiisoft/yii2/web/Application.php(104): yii\base\Module->runAction()
#3 /var/www/html/vendor/yiisoft/yii2/base/Application.php(392): yii\web\Application->handleRequest()
#4 /var/www/html/frontend/web/index.php(64): yii\base\Application->run()
#5 {main}
2021-10-17 15:06:39 [60.54.140.90][1550][sf4vnas08uip2fd2avrqkdstd0][info][application] $_GET = []
$_POST = [
'_csrf-frontend' => 'p3KtJP4UdPnnct2Nry4rEwBu1OxElrwqIAkYttxytW7AF-hIz0IZwd4tvuz5TXJBVByduiz810tOMVz8txjGFw=='
'LoginForm' => [
'login' => 'xxxxx@gmail.com'
'password' => 'xxx1239836'
'rememberMe' => '1'
]
'ajax' => 'LoginForm'
]
在我的main.php
'request' => [
'enableCsrfValidation' => true,
'csrfParam' => '_csrf-frontend',
'enableCookieValidation' => true,
'cookieValidationKey' => 'blabla-2021',
'csrfCookie'=> [
'httpOnly'=>true,
],
],
我的标题中确实有这个 <?= Html::csrfMetaTags() ?> 并且我不手动创建表单。
当我在本地主机上测试它们并且也可以使用时,表单可以正常工作。
知道为什么我会得到这个吗?以及如何解决?谢谢
更新
将我的main.php 更新到此,但仍然出现相同的错误
'request' => [
'enableCsrfCookie' => false, //force application to store the CSRF token in session instead of cookie
'csrfParam' => '_csrf-frontend',
'enableCookieValidation' => true,
'cookieValidationKey' => 'xxxxxxxxx',
],
【问题讨论】:
-
@HaimEvgi 我做了,我已经有
<?= Html::csrfMetaTags() ?>并且我没有上传多个文件。 -
您的 cookie 似乎设置为“httpOnly”,但请求类型似乎是通过 javascript(即 ajax)发出的,这意味着 js 无法访问 cookie。在这种情况下,您可能希望 js 可以使用 csrf cookie
-
@Sherif 我要一起删除
$csrfCookie吗?还是允许 javascript / ajax 帖子也访问 cookie? -
您可以尝试将 httpOnly 设置为 false。
标签: php apache amazon-ec2 yii yii2