yii2关闭csrf校验和cookie校验

2017年10月17日 · 67 字 · 1 分钟

重要提示

关闭该选项会导致应用安全性收到影响!

问题出现

  1. 开发API的时候发现POST请求老是不能通过验证,直接把报错文案放到项目中去搜索发现yii\web\Request中有enableCsrfValidation
  2. 其他应用设置的cookie,抓包的时候可以看到请求中有cookie,但是yii2读取不到。

源码解析

找到yii\web\Request文件,看到

/**
 * @var bool whether to enable CSRF (Cross-Site Request Forgery) validation. Defaults to true.
 */
public $enableCsrfValidation = true;
/**
 * @var bool whether cookies should be validated to ensure they are not tampered. Defaults to true.
 */
public $enableCookieValidation = true;

发现是这里有问题,基于yii2一切都是组件的思想,去修改组件配置即可。

修正

编辑config/web.php的components节

'request'      => [
    'cookieValidationKey'    => 'xxxx',
    'enableCookieValidation' => false,
    'enableCsrfValidation'   => false,
    ],
],