Cakephp-禁用CSRF以在android应用程序中使用api

Cakephp-禁用CSRF以在android应用程序中使用api,cakephp,cakephp-3.x,csrf-protection,cakephp-3.7,Cakephp,Cakephp 3.x,Csrf Protection,Cakephp 3.7,这里我们有cakephp版本3.7.2 Cakephp在浏览器中将Csrf设置为cookie,但我们希望从没有cookie设置的移动应用程序[Android]调用Api 我通过评论以下内容成功禁用了我的本地主机中的Csrf: $routes->applyMiddleware('csrf'); //configs/routes.php 之后cookie不会自动设置 我的问题是,当我在服务器(在线)上发布它时,浏览器中仍然设置了项目cookie。 注意:我们在Cakephp中使用SSL域(h

这里我们有cakephp版本3.7.2

Cakephp在浏览器中将Csrf设置为cookie,但我们希望从没有cookie设置的移动应用程序[Android]调用Api

我通过评论以下内容成功禁用了我的本地主机中的Csrf

$routes->applyMiddleware('csrf'); //configs/routes.php
之后cookie不会自动设置

我的问题是,当我在服务器(在线)上发布它时,浏览器中仍然设置了项目cookie。


注意:我们在Cakephp中使用SSL域(https)

来禁用CSRF中间件。您必须在
/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;
     }


希望这会有帮助

这个版本没有Application.php中的
CsrfProtectionMiddleware
,而是迁移到routes.php我唯一能做的就是将cakephp降级到3.6.2,然后做你的回答,它将在本地主机和服务器上工作。如果你的代码中没有任何地方支持CSRF中间件,那么它就不会有任何效果。如果它有一些效果,那么它在某个地方被启用。当您描述的唯一症状是cookie存在时,很难提供帮助;甚至可能是你禁用它之前留下的?@Maher这可能是缓存问题。请先尝试删除缓存,然后再试。我使用的是cakephp 3,在那里我没有找到任何这样的代码。然而,我通过AppController.php禁用了它,但仍然没有成功。还有什么建议吗?