ServerRequest does not include empty Content-type and -length headers

This commit is contained in:
PJ Dietz 2020-03-17 12:10:20 -04:00
parent d78537809b
commit d1c7076929
2 changed files with 26 additions and 1 deletions

View File

@ -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

View File

@ -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();