CakePHP 2.0.1 の Content-Length がおかしい?
CakePHP 2.0.1 がリリースされたわけだが、Content-Length がおかしいのではないかとのこと。
ソースをのぞいてみると・・・
lib/Cake/Network/CakeResponse.php
@@ -347,7 +350,11 @@ class CakeResponse { $codeMessage = $this->_statusCodes[$this->_status]; $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 && !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) { $this->_sendHeader($header, $value); }
なぜ mb_strlen() を使うのかな? この謎の修正は削除したほうがよさそう??
と、書いた後に pull リクエストが上がってた。
https://github.com/cakephp/cakephp/pull/283
このバグの修正が原因っぽい。
http://cakephp.lighthouseapp.com/projects/42648/tickets/2175
[追記:11/1]
最新の 2.0 ブランチには修正済みのソースが上がっている。最新ソースに差し替えることで対応した。
https://github.com/cakephp/cakephp/blob/2.0/lib/Cake/Network/CakeResponse.php