CakePHP 3 cors,X-CSRF-Token

时间:2018-05-23 16:19:23

标签: cakephp-3.0 csrf-protection

我在为输入表单实现CSRFProtection时遇到了一些问题。 CSRFProtectionMiddleware.php中的以下变量始终为空:

$header = $request->getHeaderLine('X-CSRF-Token');

出于这个原因,我总是得到CSRF'令牌不匹配。'错误消息。 问题出在:

$this->response->cors($this->request)->allowHeaders(['X-CSRF-Token']);

但是我不知道我应该把它放在哪里,因为在这里没有清楚地描述食谱:

https://book.cakephp.org/3.0/en/controllers/request-response.html#setting-cross-origin-request-headers-cors

1 个答案:

答案 0 :(得分:0)

您可以将其放入控制器中,但请参阅this link。 在该页面上,描述应为

$this->response = $this->response->cors($this->request)
->allowOrigin(['*.cakephp.org'])
->allowMethods(['GET', 'POST'])
->allowHeaders(['X-CSRF-Token'])
->allowCredentials()
->exposeHeaders(['Link'])
->maxAge(300)
->build();

而不只是

$this->response->cors($this->request)
->allowOrigin(['*.cakephp.org'])
->allowMethods(['GET', 'POST'])
->allowHeaders(['X-CSRF-Token'])
->allowCredentials()
->exposeHeaders(['Link'])
->maxAge(300)
->build();


希望对您有帮助。