CakePHP3.7でajax通信をする際に、CSRFチェックによって403エラーが発生してしまいました。
そのためこの記事を参考にしました。
https://qiita.com/nava/items/21c08bb2a7f5a4dfe65e
CakePHP3.7ではCSRFチェックの設定がsrc/routers.phpに存在します。(以前はsrc/Application.php)
今回はCSRFチェックを無効にするために下記のように、routers.phpの一部をコメントアウトすることで対処しました。
Router::scope('/', function (RouteBuilder $routes) { // Register scoped middleware for in scopes. /* $routes->registerMiddleware('csrf', new CsrfProtectionMiddleware([ 'httpOnly' => true ])); */ /** * Apply a middleware to the current route scope. * Requires middleware to be registered via `Application::routes()` with `registerMiddleware()` */ //$routes->applyMiddleware('csrf'); ... });
今回はCakePHP3でしたが、CakePHP4では個別にホワイトリストを用いることで、CSRFチェックの対象をControllerやActionごとに指定できます。 【CakePHP】CakePHP4でAjaxからのPOSTが403(Forbidden)エラーになる現象の解決策