升級到 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 關注
- 108 瀏覽
添加回答
舉報
0/150
提交
取消