【问题标题】:csrf issue with yii2 on server服务器上 yii2 的 csrf 问题
【发布时间】:2016-01-08 21:51:33
【问题描述】:

我在使 yii2 表单在服务器上工作时遇到问题。我在我的本地机器上有这个项目,它工作正常,但在服务器上(据说配置相同)它失败了。我看到在请求中缺少 csrf cookie。

它只发送 PHPSESSID。我在 meta 中有 csrf,并作为隐藏输入。相同的代码在我的本地配置中运行良好。例如,当我查看 phpinfo 时,似乎只有很少的细微差别不会影响这一点。

我不确定这里是否可能存在重要的 apache 差异。我本地的版本是2.4,服务器是2.2。除此之外,其他一切似乎都一样。

【问题讨论】:

  • Atm 我看不出为什么没有设置 cookie。是否设置了其他 yii2 cookie?
  • 显示你的配置文件
  • 看起来在执行 sendHeaders 方法之前发送了另一个标头(内容类型和 php 标识标头)。出于这个原因,它甚至没有达到应该将 cookie 设置为响应的地步。正在进一步调查他们在哪里以及为什么在它之前被发送

标签: php apache yii2 csrf


【解决方案1】:

首先在您的控制器中添加以下功能:

public function beforeAction($action) {
    $this->enableCsrfValidation = false;
    return parent::beforeAction($action);
}

否则添加

public $enableCsrfValidation = false;

在你的控制器类中

希望这对您有所帮助。如果是,请标记为已批准。

【讨论】:

  • 这只是禁用它,甚至不正确。你真的应该在配置中这样做
  • 我想要的并不是真正禁用它。
猜你喜欢
  • 2016-08-27
  • 2021-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多