[BUGFIX] Fix non-302 redirects for PSR-7 response objects 15/51815/2
authorBenjamin Franzke <bfr@qbus.de>
Tue, 20 Dec 2016 06:26:42 +0000 (07:26 +0100)
committerMorton Jonuschat <m.jonuschat@mojocode.de>
Sun, 26 Feb 2017 16:50:15 +0000 (17:50 +0100)
commit1d645459f1dccf9239872492a5de2fe0ed4542ce
treefc2e55f63281c0aa1a82ca398bb6938ccc7315cc
parentcf3ac8153b7b666edeb9cb89b83d1660436c2726
[BUGFIX] Fix non-302 redirects for PSR-7 response objects

All redirect status codes (e.g. 201,301,303,307) are incorrectly
sent as 302.

We need to set the response code before setting the Location header,
as a call to header('Location: ...'); sets the response code
implicitly to 302 (unless it has already been set to 201 or 3xx) [1].
By settings the status code/header first, header('Location: ..') will
not change the status code, if the PSR-7 response object contains a
proper redirect status code.

[1] http://php.net/manual/en/function.header.php
    The second special case is the "Location:" header.
    Not only does it send this header back to the browser, but it also
    returns a REDIRECT (302) status code to the browser unless the 201
    or a 3xx status code has already been set.

Change-Id: Ifa076e6393c6ed42d93959fe8c3a5b79cee145a4
Fixes: #79043
Releases: master, 7.6
Reviewed-on: https://review.typo3.org/51815
Tested-by: TYPO3com <no-reply@typo3.com>
Reviewed-by: Josef Glatz <josef.glatz@typo3.org>
Tested-by: Josef Glatz <josef.glatz@typo3.org>
Reviewed-by: Morton Jonuschat <m.jonuschat@mojocode.de>
Tested-by: Morton Jonuschat <m.jonuschat@mojocode.de>
typo3/sysext/core/Classes/Core/Bootstrap.php