Es gibt zwei Spezial-Case-Header-Anrufe ... Der zweite Sonderfall ist der "Ort:". Header. Es sendet diesen Header nicht nur an den Browser zurück, sondern gibt auch einen Umleitungs -Statuscode an den Browser zurück, es sei denn, der 201xx -Statuscode wurde bereits festgelegt. Das Testen auf dem integrierten Webserver von PHP mit diesem Code funktioniert einwandfrei: < /p>
Code: Select all
header('Location: https://example.com/foo', true, 200);
header('Content-Type: application/json');
echo '{"test":"testing"}';
< /code>
Aber als ich auf den Produktions-PHP-FPM-Server übergegangen bin, hat es nicht mehr funktioniert. Ich habe viele Variationen in diesem Code ohne Glück ausprobiert: < /p>
header('Location: https://example.com/foo', true, 200);
http_response_code(200);
header('HTTP/1.1 200 OK', true, 200);
header('Content-Type: application/json');
echo '{"test":"testing"}';
< /code>
Wie kann ich das tun, wenn überhaupt?if ((SG(sapi_headers).http_response_code < 300 ||
SG(sapi_headers).http_response_code > 399) &&
SG(sapi_headers).http_response_code != 201) {
/* Return a Found Redirect if one is not already specified */
if (http_response_code) { /* user specified redirect code */
sapi_update_response_code(http_response_code);
} else if (SG(request_info).proto_num > 1000 &&
SG(request_info).request_method &&
strcmp(SG(request_info).request_method, "HEAD") &&
strcmp(SG(request_info).request_method, "GET")) {
sapi_update_response_code(303);
} else {
sapi_update_response_code(302);
}
}