From 9a95978f7a7f799791671adf048b0de136ab4e9e Mon Sep 17 00:00:00 2001 From: Ako Tulu Date: Wed, 9 Oct 2024 08:23:16 +0300 Subject: [PATCH] Fixed cookie parsing, parse_str replaces urlencoded characters. --- src/Protocols/Http/Request.php | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/Protocols/Http/Request.php b/src/Protocols/Http/Request.php index fd8c41c2..7cc3ab0d 100644 --- a/src/Protocols/Http/Request.php +++ b/src/Protocols/Http/Request.php @@ -222,8 +222,17 @@ public function setHeaders(array $headers): Request public function cookie(string $name = null, mixed $default = null): mixed { if (!isset($this->data['cookie'])) { - $this->data['cookie'] = []; - parse_str(preg_replace('/; ?/', '&', $this->header('cookie', '')), $this->data['cookie']); + $cookies = explode(';', $this->header('cookie', '')); + $mapped = array(); + + foreach ($cookies as $cookie) { + $cookie = explode('=', $cookie); + if (count($cookie) !== 2) { + continue; + } + $mapped[trim($cookie[0])] = $cookie[1]; + } + $this->data['cookie'] = $mapped; } if ($name === null) { return $this->data['cookie'];