Browse Source

Remove charset on json content-type

Don't emit a charset parameter on the json content type. Chrome has
started emitting warnings when this parameter is present as it isn't
compliant with the spec.

Fixes #13156
Mark Story 7 years ago
parent
commit
e1fa05415f

+ 1 - 1
src/Http/Response.php

@@ -581,7 +581,7 @@ class Response implements ResponseInterface
             return;
         }
         $whitelist = [
-            'application/javascript', 'application/json', 'application/xml', 'application/rss+xml'
+            'application/javascript', 'application/xml', 'application/rss+xml'
         ];
 
         $charset = false;

+ 1 - 2
tests/TestCase/Http/ResponseTest.php

@@ -315,7 +315,7 @@ class ResponseTest extends TestCase
         );
         $this->assertSame('application/pdf', $new->getHeaderLine('Content-Type'));
         $this->assertSame(
-            'application/json; charset=UTF-8',
+            'application/json',
             $new->withType('json')->getHeaderLine('Content-Type')
         );
     }
@@ -463,7 +463,6 @@ class ResponseTest extends TestCase
         return [
             ['mp3', 'audio/mpeg'],
             ['js', 'application/javascript; charset=UTF-8'],
-            ['json', 'application/json; charset=UTF-8'],
             ['xml', 'application/xml; charset=UTF-8'],
             ['txt', 'text/plain; charset=UTF-8'],
         ];

+ 0 - 4
tests/TestCase/Http/ResponseTransformerTest.php

@@ -301,10 +301,6 @@ class ResponseTransformerTest extends TestCase
         $cake->type('application/octet-stream');
         $result = ResponseTransformer::toPsr($cake);
         $this->assertSame('application/octet-stream', $result->getHeaderLine('Content-Type'));
-
-        $cake->type('application/json');
-        $result = ResponseTransformer::toPsr($cake);
-        $this->assertSame('application/json; charset=utf-8', $result->getHeaderLine('Content-Type'));
     }
 
     /**