2016-12-02 8 views
5

apache_request_headers()、$ _SERVER、$ _ENV、getallheaders()を使用してすべてのヘッダーを取得しようとしました。phpがカスタムヘッダーを取得していません(Apache 2.4 + FPM/FastCGI php 7)

私は、Apache 2.4は、セキュリティ上の理由から、未知のヘッダをドロップして追加することによって、それを回避しようとしていることを知っている:

に成功知られているヘッダの名前を変更しますが、X-カスタムヘッダーをキャッチしようとしたときに/キャッチ
SetEnvIfNoCase ^X (.*) HTTP_CUSTOM=$0 
RequestHeader set HTTP_CUSTOM %{HTTP_CUSTOM}e env=HTTP_CUSTOM 

をそれは常に空です。

原因は何でしょうか?

+0

コマンドを返すもの: 'apache2ctl -V'? 追加またはマージしてテストしましたか? 'RequestHeader add HTTP_CUSTOM%{HTTP_CUSTOM} e env = HTTP_CUSTOM' –

+0

@logicは私の答えでしたか? – bassxzero

答えて

0

だから私は実際に何をしようとしているのかわかりません。

あなたのリクエストからXで始まるヘッダーを応答に追加しようとしている場合、htaccessファイルでこれを使用します。

Header echo ^X 

あなたは、彼らがあなたの$_SERVER配列にする必要がありますあなたのPHPスクリプトでヘッダー値を使用しようとしているが、名前が正規化されている場合。 EG

X-Custom-Header: blah 
X-Na-Bra: true 

は、それはあなたがこのような場合は、Xで始まるヘッダの動的な数から値を取得したいのように、あなたのコードではないでしょう聞こえる

<?php 
    // note that headers are prefixed with "HTTP" and "-" and changed to "_" 
    echo $_SERVER['HTTP_X_CUSTOM_HEADER']; 
    echo $_SERVER['HTTP_X_NA_BRA']; 

    // either way you should be able to find them with a print_r($_SERVER); 
    // print_r(getallheaders()); should show the headers without normalized names 
    $tempArray = getallheaders(); 
    echo $tempArray['X-Custom-Header']; 
?> 

からアクセスすることができますいずれかの方法で動作します。あなたのコード(もしうまくいけば)は、常にの最後のというXの値で始まるヘッダの値を含んでいます。したがって、Xで始まるヘッダーが2つ以上あれば、値がありません。あなたのコードを使って、PHPスクリプトに渡す各ヘッダのルールを作成する必要があります。これは痛みのようです。

私は何かが不足している場合は、以下のコメントと私はこの答えを更新します。

関連する問題