Кажется, я не могу сразу отправлять заголовки из PHP при работе в качестве FPM. Они отправляются только в конце запроса вместе с контентом.
У меня есть установка Apache + PHP-FPM. Я отключил сжатие вывода в PHP и Apache.
Я даже просмотрел поток TCP-соединения, используя tcpdump -nn -i any -A -s 0 port 9000
, и увидел, что PHP не отправляет заголовки Apache до конца, поэтому проблема связана с настройкой PHP.
См. ниже тестовый код, который я использую.
header('Status: 200 OK');
header('Content-type: text/html; charset=utf-8');
header('Link: </src/app/src/App/Ui/Layout/default.css?__mtime=1553684041>; rel=preload; as=style;', false);
flush();
header('Test: 1', false);
sleep(5);
header('Test2: 2', false);
echo 'test';
Я бы ожидал, что заголовок Link:
будет отправлен до конца запроса, то есть до строки 'test'
, но это не так. Все заголовки отправляются в конце запроса после 5
секундной задержки.
Что я делаю не так?
PHP does not support 103 Early Hints, because it doesn’t have a native ability to send more than 1 status code back to a client
- https://evertpot.com/http/103-early-hints - person phpcoder   schedule 29.03.2019