我在为输入表单实现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
你可以把它放在你的控制器中,但请参阅这个链接。 它那个页面,它被描述它应该是
$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();
希望对您有所帮助。