升级到 CakepPHP 4.0 后,我通过 XMLHttpRequest 发出的 POST 请求停止将数据传递给$this->request->getData()虽然可以访问数据,$this->request->input('json_decode');但 GET 请求也可以正常工作。但我想知道与 3.* 相比发生了什么变化,以及为什么它不像以前那样工作。这是我的 xhr:this.$http.post( url, data, {headers: {'X-CSRF-TOKEN': '<?= $this->request->getAttribute('csrfToken') ?>'}}, }) .then(response => { // } );当我打电话时它给了我一个空数组$this->request->getData()我试图为该特定操作关闭 FormProtection 组件,但没有任何改变。
1 回答

斯蒂芬大帝
TA贡献1827条经验 获得超8个赞
如果想知道发生了什么变化,请先查看迁移指南,在这种情况下,特别是组件的重大更改部分。
请求正文解析功能已从请求处理程序组件中删除(之前存在的弃用警告也已删除,因为它导致了太多误报)。这现在应该由body parser middleware处理,您需要相应地添加您的应用程序,或者在您的Application类中全局添加:
public function middleware(MiddlewareQueue $middlwareQueue): MiddlewareQueue
{
// ...
$middlwareQueue->add(new \Cake\Http\Middleware\BodyParserMiddleware());
return $middlwareQueue;
}
或在路由范围内:
\Cake\Routing\Router::scope('/', function (\Cake\Routing\RouteBuilder $routes) {
$routes->registerMiddleware('bodyParser', new \Cake\Http\Middleware\BodyParserMiddleware());
$routes->applyMiddleware('bodyParser');
// ...
});
- 1 回答
- 0 关注
- 91 浏览
添加回答
举报
0/150
提交
取消