File tree Expand file tree Collapse file tree 3 files changed +18
-3
lines changed Expand file tree Collapse file tree 3 files changed +18
-3
lines changed Original file line number Diff line number Diff line change @@ -1561,7 +1561,9 @@ public function isNoCache()
1561
1561
* Gets the preferred format for the response by inspecting, in the following order:
1562
1562
* * the request format set using setRequestFormat
1563
1563
* * the values of the Accept HTTP header
1564
- * * the content type of the body of the request.
1564
+ *
1565
+ * Note that if you use this method, you should send the "Vary: Accept" header
1566
+ * in the response to prevent any issues with intermediary HTTP caches.
1565
1567
*/
1566
1568
public function getPreferredFormat (?string $ default = 'html ' ): ?string
1567
1569
{
Original file line number Diff line number Diff line change @@ -266,7 +266,7 @@ public function prepare(Request $request)
266
266
} else {
267
267
// Content-type based on the Request
268
268
if (!$ headers ->has ('Content-Type ' )) {
269
- $ format = $ request ->getPreferredFormat (null );
269
+ $ format = $ request ->getRequestFormat (null );
270
270
if (null !== $ format && $ mimeType = $ request ->getMimeType ($ format )) {
271
271
$ headers ->set ('Content-Type ' , $ mimeType );
272
272
}
Original file line number Diff line number Diff line change @@ -497,12 +497,25 @@ public function testPrepareDoesNothingIfRequestFormatIsNotDefined()
497
497
$ this ->assertEquals ('text/html; charset=UTF-8 ' , $ response ->headers ->get ('content-type ' ));
498
498
}
499
499
500
+ /**
501
+ * Same URL cannot produce different Content-Type based on the value of the Accept header,
502
+ * unless explicitly stated in the response object.
503
+ */
504
+ public function testPrepareDoesNotSetContentTypeBasedOnRequestAcceptHeader ()
505
+ {
506
+ $ response = new Response ('foo ' );
507
+ $ request = Request::create ('/ ' );
508
+ $ request ->headers ->set ('Accept ' , 'application/json ' );
509
+ $ response ->prepare ($ request );
510
+
511
+ $ this ->assertSame ('text/html; charset=UTF-8 ' , $ response ->headers ->get ('content-type ' ));
512
+ }
513
+
500
514
public function testPrepareSetContentType ()
501
515
{
502
516
$ response = new Response ('foo ' );
503
517
$ request = Request::create ('/ ' );
504
518
$ request ->setRequestFormat ('json ' );
505
- $ request ->headers ->remove ('accept ' );
506
519
507
520
$ response ->prepare ($ request );
508
521
You can’t perform that action at this time.
0 commit comments