Browse Source

Merge pull request #11779 from cakephp/issue-11761

Fix RequestHandler::prefers() returning false positives.
Mark Story 8 years ago
parent
commit
676da07d59

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

@@ -506,7 +506,7 @@ class RequestHandlerComponent extends Component
         $acceptRaw = $request->parseAccept();
 
         if (empty($acceptRaw)) {
-            return $this->ext;
+            return $type ? $type === $this->ext : $this->ext;
         }
         $accepts = $response->mapType(array_shift($acceptRaw));
 

+ 4 - 0
tests/TestCase/Controller/Component/RequestHandlerComponentTest.php

@@ -898,6 +898,10 @@ class RequestHandlerComponentTest extends TestCase
         $this->request->env('HTTP_ACCEPT', '*/*;q=0.5');
         $this->assertEquals('html', $this->RequestHandler->prefers());
         $this->assertFalse($this->RequestHandler->prefers('rss'));
+
+        $this->Controller->request = $this->request->withEnv('HTTP_ACCEPT', null);
+        $this->RequestHandler->ext = 'json';
+        $this->assertFalse($this->RequestHandler->prefers('xml'));
     }
 
     /**