diff --git a/core/http/src/handling/request.rs b/core/http/src/handling/request.rs
index a74685fafbf55d310c6c909ea6291252d57bb60a..5267de1f40c168e5a256c7007fe8482d26a44aa8 100644
--- a/core/http/src/handling/request.rs
+++ b/core/http/src/handling/request.rs
@@ -145,7 +145,10 @@ impl Request<'_> {
         match post_type {
             Mime::ApplicationXWwwFormUrlencoded => {
                 for kvp in data.split(|byte| *byte == b'&') {
-                    let kvp = kvp.split(|byte| *byte == b'=').collect::<Vec<&[u8]>>();
+                    let kvp = kvp
+                        .split(|byte| *byte == b'=')
+                        .map(|list| list.to_vec())
+                        .collect::<Vec<Vec<u8>>>();
                     let key = if let Some(kv) = kvp.get(0) {
                         kv
                     } else {
@@ -331,7 +334,7 @@ mod test {
             method: crate::handling::methods::Method::Post,
         };
         let data = Data {
-            buffer: b"message=23&message1=24".to_vec(),
+            buffer: b"message=24&message1=23".to_vec(),
             is_complete: true,
         };
         assert_eq!(