Not sending a content-length for redirection status codes that are not supposed to have any content

This commit is contained in:
Jose Lorenzo Rodriguez 2011-10-27 23:18:49 -04:30
parent aabfad9a09
commit 9866882506
2 changed files with 10 additions and 2 deletions

View file

@ -351,8 +351,8 @@ class CakeResponse {
$this->_sendHeader("{$this->_protocol} {$this->_status} {$codeMessage}");
$this->_sendHeader('Content-Type', "{$this->_contentType}; charset={$this->_charset}");
$shouldSetLength = empty($this->_headers['Content-Length']) && class_exists('Multibyte');
$shouldSetLength = $shouldSetLength && !$this->outputCompressed();
if ($shouldSetLength) {
$shouldSetLength = $shouldSetLength && !in_array($this->_status, range(301, 307));
if ($shouldSetLength && !$this->outputCompressed()) {
$this->_headers['Content-Length'] = mb_strlen($this->_body);
}
foreach ($this->_headers as $header => $value) {

View file

@ -416,5 +416,13 @@ class CakeResponseTest extends CakeTestCase {
$response->expects($this->at(2))
->method('_sendHeader')->with('Content-Length', 1);
$response->send();
$response = $this->getMock('CakeResponse', array('_sendHeader', '_sendContent'));
$body = 'content';
$response->statusCode(301);
$response->body($body);
$response->expects($this->once())->method('_sendContent')->with($body);
$response->expects($this->exactly(2))->method('_sendHeader');
$response->send();
}
}