diff --git a/src/Message/ServerRequest.php b/src/Message/ServerRequest.php index ed9068d..49cc798 100644 --- a/src/Message/ServerRequest.php +++ b/src/Message/ServerRequest.php @@ -485,7 +485,7 @@ class ServerRequest extends Request implements ServerRequestInterface if (substr($name, 0, 5) === "HTTP_") { $name = $this->normalizeHeaderName(substr($name, 5)); $headers[$name] = $value; - } elseif ($name === "CONTENT_LENGTH" || $name === "CONTENT_TYPE") { + } elseif ($this->isContentHeader($name, $value)) { $name = $this->normalizeHeaderName($name); $headers[$name] = $value; } @@ -493,6 +493,17 @@ class ServerRequest extends Request implements ServerRequestInterface return $headers; } + /** + * @param $name + * @param $value + * @return bool + */ + private function isContentHeader($name, $value) + { + return ($name === "CONTENT_LENGTH" || $name === "CONTENT_TYPE") + && trim($value); + } + /** * @param string $name * @return string diff --git a/test/tests/unit/Message/ServerRequestTest.php b/test/tests/unit/Message/ServerRequestTest.php index 68407ff..83faa54 100644 --- a/test/tests/unit/Message/ServerRequestTest.php +++ b/test/tests/unit/Message/ServerRequestTest.php @@ -135,6 +135,20 @@ class ServerRequestTest extends TestCase $this->assertEquals("application/json", $request->getHeaderLine("Content-type")); } + /** + * @backupGlobals enabled + */ + public function testGetServerRequestDoesNotReadEmptyContentHeaders() + { + $_SERVER = [ + "CONTENT_LENGTH" => "", + "CONTENT_TYPE" => " " + ]; + $request = ServerRequest::getServerRequest(); + $this->assertFalse($request->hasHeader("Content-length")); + $this->assertFalse($request->hasHeader("Content-type")); + } + public function testGetServerRequestReadsBody() { $body = new NullStream();