Мы видим подобную проблему с nph-файлом, который действует как шлюз к Межсистемам Скрытое (база данных и сервер веб-приложения). Хорошо работает, пока мы не используем перезапись URL. Любой запрос, обработанный перезаписью URL, производит побочный заголовок, описанный выше (в или около нижней части контента ответа).
Мы пытались изолировать ошибку с маленьким nph-сценарием Perl и имели ту же проблему. Протестированный на различных серверах: Apache/2.2.11 на Ubuntu 9.04, Apache/2.2.9 на Debian 5.0 и Apache/2.0.52 на Red Hat EL 4.
Сценарий nph-test.cgi в регулярном cgi-каталоге-bin:
#!/usr/bin/perl -wT
use strict;
print "$ENV{SERVER_PROTOCOL} 200 OK\n";
print "Server: $ENV{SERVER_SOFTWARE}\n";
print "Content-Type: text/plain\n\n";
# Tell Perl not to buffer our output
$| = 1;
print "OK.";
Перезапись URL
RewriteEngine On
RewriteRule ^test/([0-9]+)$ /cgi-bin/nph-test.cgi
(в Apache .conf файл, под Directory /var/www/
)
Ответ
OK.
HTTP/1.1 200 OK
Date: Mon, 07 Dec 2009 09:44:40 GMT
Server: Apache/2.2.11 (Ubuntu) PHP/5.2.6-3ubuntu4.2 with Suhosin-Patch
Content-Length: 0
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Content-Type: text/plain
Другие источники, описывающие те же или подобные проблемы:
Используя Довольную Длину работает на сценарий тестирования, но не решает нашу проблему, так как мы, очевидно, не можем изменить nph-cgi исполняемый файл, который идет с Межсистемами Скрытое.
Как Вы говорите, это должно, вероятно, быть отправлено Apache, но правила, размеченные по httpd.apache.org/bug_report.html, являются довольно пугающими. (У меня есть ограниченные знания Apache.)
Вы могли установить mod_security, свободное дополнение, которое позволит Вам изменять Сервер: заголовок к тому, чего когда-либо Вы желаете, например, Вы могли заставить его сказать "IIS" или просто заставить его сказать "Не Ваше дело!" :)
Деталями как в подписи или заголовках управляют ServerTokens
директива. Вы не можете показать меньше, чем "Apache", не изменяя исходный код и перекомпилировав Apache.
Вы не должны волноваться слишком много об этом, существуют другие способы узнать это, Вы используете Apache: ошибочные страницы (не всего 404, но и плохие заголовки, например) или запрос .ht
файлы (отклоненный по умолчанию в Apache).