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_") { if (substr($name, 0, 5) === "HTTP_") {
$name = $this->normalizeHeaderName(substr($name, 5)); $name = $this->normalizeHeaderName(substr($name, 5));
$headers[$name] = $value; $headers[$name] = $value;
} elseif ($name === "CONTENT_LENGTH" || $name === "CONTENT_TYPE") { } elseif ($this->isContentHeader($name, $value)) {
$name = $this->normalizeHeaderName($name); $name = $this->normalizeHeaderName($name);
$headers[$name] = $value; $headers[$name] = $value;
} }
@ -493,6 +493,17 @@ class ServerRequest extends Request implements ServerRequestInterface
return $headers; 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 * @param string $name
* @return string * @return string

View File

@ -135,6 +135,20 @@ class ServerRequestTest extends TestCase
$this->assertEquals("application/json", $request->getHeaderLine("Content-type")); $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() public function testGetServerRequestReadsBody()
{ {
$body = new NullStream(); $body = new NullStream();