Cakephp-禁用CSRF以在android应用程序中使用api
这里我们有cakephp版本3.7.2 Cakephp在浏览器中将Csrf设置为cookie,但我们希望从没有cookie设置的移动应用程序[Android]调用Api 我通过评论以下内容成功禁用了我的本地主机中的Csrf: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
$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禁用了它,但仍然没有成功。还有什么建议吗?