Cakephp - отключить CSRF для использования API в приложении Android
Здесь у нас есть версия 3.7.2 cakephp.
Cakephp установил Csrf как cookie в браузерах, но мы хотим вызывать Api из мобильного приложения [Android], для которого не нужно устанавливать cookie.
Я успешно отключил Csrf на своем локальном хосте, комментируя:
$routes->applyMiddleware('csrf'); //configs/routes.php
И после этого cookie не устанавливается автоматически.
Моя проблема заключается в том, что, когда я публикую его на сервере (онлайн), файл cookie проекта все еще устанавливается в браузере.
Примечание: мы использовали домен SSL (https)
1 ответ
В Cakephp, чтобы отключить промежуточное программное обеспечение CSRF, вы должны прокомментировать CsrfProtectionMiddleware
в /src/Application.php
public function middleware($middlewareQueue)
{
$middlewareQueue
// Catch any exceptions in the lower layers,
// and make an error page/response
->add(ErrorHandlerMiddleware::class)
// Handle plugin/theme assets like CakePHP normally does.
->add(new AssetMiddleware([
'cacheTime' => Configure::read('Asset.cacheTime')
]))
// Add routing middleware.
// Routes collection cache enabled by default, to disable route caching
// pass null as cacheConfig, example: `new RoutingMiddleware($this)`
// you might want to disable this cache in case your routing is extremely simple
->add(new RoutingMiddleware($this, '_cake_routes_'));
// Add csrf middleware. // comment these lines
// ->add(new CsrfProtectionMiddleware([
// 'httpOnly' => true
// ]));
return $middlewareQueue;
}
Cakephp -> Промежуточное ПО -> Промежуточное ПО для межсайтовых запросов (CSRF)
Надеюсь, это поможет!