diff --git a/src/Network/Request.php b/src/Network/Request.php index c510bd14f5b..0ce13f95429 100644 --- a/src/Network/Request.php +++ b/src/Network/Request.php @@ -893,7 +893,10 @@ public function here($base = true) */ public function header($name) { - $name = 'HTTP_' . str_replace('-', '_', $name); + $name = str_replace('-', '_', $name); + if (strtoupper(substr($name, 0, 8)) !== 'CONTENT_') { + $name = 'HTTP_' . $name; + } return $this->env($name); } diff --git a/tests/TestCase/Network/RequestTest.php b/tests/TestCase/Network/RequestTest.php index e16b736d8f3..759f34a0c19 100644 --- a/tests/TestCase/Network/RequestTest.php +++ b/tests/TestCase/Network/RequestTest.php @@ -1038,11 +1038,15 @@ public function testHeader() { $request = new Request(['environment' => [ 'HTTP_HOST' => 'localhost', - 'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-ca) AppleWebKit/534.8+ (KHTML, like Gecko) Version/5.0 Safari/533.16' + 'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-ca) AppleWebKit/534.8+ (KHTML, like Gecko) Version/5.0 Safari/533.16', + 'CONTENT_TYPE' => 'application/json', + 'CONTENT_LENGTH' => 1337, ]]); $this->assertEquals($request->env('HTTP_HOST'), $request->header('host')); $this->assertEquals($request->env('HTTP_USER_AGENT'), $request->header('User-Agent')); + $this->assertEquals($request->env('CONTENT_LENGTH'), $request->header('content-length')); + $this->assertEquals($request->env('CONTENT_TYPE'), $request->header('content-type')); } /**