Как удалить определенные заголовки ответа HTTP в PHP? - PullRequest
2 голосов
/ 31 декабря 2010

Я хотел бы удалить следующие заголовки:

Connection: Keep-Alive
Server: Apache/2.2.13 (Win32)
Vary: Accept-Encoding
Keep-Alive: timeout=5, max=66

Ответы [ 3 ]

4 голосов
/ 31 декабря 2010

Я не думаю, что это может быть сделано правильно в PHP, так как эти заголовки устанавливаются Apache.

В PHP 5.3 есть header_remove(), но он может удалить только заголовки, установленные PHP (если я правильно понимаю).Вы также можете перезаписать нежелательные заголовки, отправив их снова с пустыми значениями, но исходные значения будут отправлены в любом случае.

Лучше всего исправить это в корне, в конфигурации Apache.Например, директива ServerTokens может изменить заголовок «Server:».

Похожие: apache_response_headers()

2 голосов
/ 31 декабря 2010

Вы можете превратить ваш скрипт в CGI без разбора заголовка.Для этого вам нужно переименовать скрипт example.php в nph-script.cgi, сделать его исполняемым (+ x) и добавить шебанг:

#!/usr/bin/php-cgi
<?php

Для этого вам необходимо отправить ALL httpоднако, вы сами заголовки, включая строку состояния HTTP/1.0 200 OK.(см. rfc2616 php.ini config)

О, и на самом деле я понятия не имею, работает ли это для текущих версий Apache.

0 голосов
/ 27 января 2015

Использование PHP (или любого другого языка сайта сервера) и отправка заголовка Connection: close.Это приведет к тому, что Apache пропустит заголовок Keep-Alive, так как соединение больше не является активным.например,

header('Connection: close');

Не уверен, что он работает одинаково на всех типах серверов, предложения приветствуются.

Подробнее здесь

...