2010-12-31 19 views
2

私は、以下のヘッダを削除したい:PHPで特定のHTTP応答ヘッダーを削除するにはどうすればよいですか?

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

あなたも、これらのヘッダーフィールドが使用され何を知っていますか? – Gumbo

+2

ええええええええええええええええ、私は彼らが自分のために話すと思いますか? –

答えて

3

私はこれらのヘッダは、アパッチによって設定され、これは、PHPで適切に行うことができるとは思いません。

PHP 5.3のheader_remove()がありますが、それはPHPで設定されたヘッダーのみを削除できます(私が正しく理解している場合)。また、不要なヘッダーを空の値で再度送信して上書きすることもできますが、元の値はそのまま送信されます。

Apacheの設定で、これをルートで修正するのが最善の方法です。たとえば、ServerTokensディレクティブは、 "Server:"ヘッダーを変更できます。

関連:apache_response_headers()

+0

"set by PHP"とはどういう意味ですか? PHPで設定された 'Host'、' Connection'、 'Content-Type'、' X-Powered-By'を考えていますか? – Pacerier

+0

@Pacerier 'header_remove()'は、PHPで 'header()'によって以前に設定されたヘッダのみを削除することができます。あなたが言及する最初の2つのヘッダーは一般にApacheによって設定されます。 'x-powered-by'が' header_remove() 'を使って削除できるかどうかは分かりませんが、私はそうは思いません。 'Content-type'はPHPスクリプトで設定することができ、そうであれば' header_remove() 'で取り消すことができます。 –

+0

ここで 'x-powered-by'を取り除くことができるようです。これはApacheによって設定されていませんか? ApacheとPHPの間の行はどこですか? – Pacerier

2

あなたは、非解析ヘッダCGIにあなたのスクリプトを回すことができます。そのために、あなたは、nph-script.cgiにあなたのexample.phpスクリプトの名前を変更(+ x)​​は、それが実行可能にし、シェバングを追加する必要があります。

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

これはHTTP/1.0 200 OKステータス行を含め、しかしを自分でALL HTTPヘッダを送信する必要があります。 (rfc2616 php.iniの設定を参照してください)

ああ、実際に私はこれが現行のApacheバージョンではまだ動作しているかどうかは分かりません。

+0

Windowsの '#!/ usr/bin/php-cgi'に相当するものは何ですか? – Pacerier

+0

@Pacerier真の同等物はありません。あなたはシバンを取り除き、 '.php'ファイル拡張子をcgiインタプリタにバインドするか、それを呼び出すようにします。 – mario

0

PHP(または他の任意のサーバーサイト言語)を使用し、ヘッダーをConnection:closeに送信します。これにより、接続はもはやキープアライブではないため、ApacheはKeep-Aliveヘッダーを省略します。例えば

header('Connection: close'); 

すべてのタイプのサーバーで同じように動作するかどうかはわかりませんが、ご了承ください。

続きを読むhere

関連する問題