Browse Source

Don't break access to content-md5 header.

Also remove some duplicated code in RequestHandlerComponent.
mark_story 9 years ago
parent
commit
3d5b0b2689

+ 1 - 4
src/Controller/Component/RequestHandlerComponent.php

@@ -455,10 +455,7 @@ class RequestHandlerComponent extends Component
             return false;
         }
 
-        list($contentType) = explode(';', $request->env('CONTENT_TYPE'));
-        if ($contentType === '') {
-            list($contentType) = explode(';', $request->header('CONTENT_TYPE'));
-        }
+        list($contentType) = explode(';', $request->contentType());
         $response = $this->response;
         if ($type === null) {
             return $response->mapType($contentType);

+ 1 - 1
src/Network/Request.php

@@ -894,7 +894,7 @@ class Request implements ArrayAccess
     public function header($name)
     {
         $name = str_replace('-', '_', $name);
-        if (strtoupper(substr($name, 0, 8)) !== 'CONTENT_') {
+        if (!in_array(strtoupper($name), ['CONTENT_LENGTH', 'CONTENT_TYPE'])) {
             $name = 'HTTP_' . $name;
         }
         return $this->env($name);

+ 2 - 0
tests/TestCase/Network/RequestTest.php

@@ -1041,12 +1041,14 @@ class RequestTest extends TestCase
             'HTTP_USER_AGENT' => 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-ca) AppleWebKit/534.8+ (KHTML, like Gecko) Version/5.0 Safari/533.16',
             'CONTENT_TYPE' => 'application/json',
             'CONTENT_LENGTH' => 1337,
+            'HTTP_CONTENT_MD5' => 'abc123'
         ]]);
 
         $this->assertEquals($request->env('HTTP_HOST'), $request->header('host'));
         $this->assertEquals($request->env('HTTP_USER_AGENT'), $request->header('User-Agent'));
         $this->assertEquals($request->env('CONTENT_LENGTH'), $request->header('content-length'));
         $this->assertEquals($request->env('CONTENT_TYPE'), $request->header('content-type'));
+        $this->assertEquals($request->env('HTTP_CONTENT_MD5'), $request->header('content-md5'));
     }
 
     /**