3

すべて大文字でアンダースコアの HTTP ヘッダーをリクエストと共に送信することに依存するアプリがあります。

Apache 2.4以降、

無効な文字 (アンダースコアを含む) を含むヘッダーがサイレントにドロップされるようになりました

このページでは、削除されないレガシー HTTP ヘッダーを許可する変更可能な設定があることを示唆しています (つまり、CURL で設定されている場合、PHP の $_SERVER 配列に表示されます)。どうやって。HTACCESS ファイルに以下を追加してみましたが、

SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1 RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding

しかし、それは役に立たなかったようです。Apache 2.2 から 2.4 に移行するときに、これを経験した人はいますか?

4

3 に答える 3

4

私は同じ問題を抱えていました.REST APIには、認証用に2つのカスタムヘッダー、CCS_USERNAMEとCCS_AUTHENTICATIONが必要でした. Apache 2.4 にアップグレードした後、どちらのヘッダーも $_SERVER 配列で見つかりませんでした。

問題を解決するには、次の方法で htaccess ファイルを修正する必要がありました。

SetEnvIfNoCase ^CCS.USERNAME$ ^(.*)$ fix_ccs_username=$1
RequestHeader set CCS-USERNAME %{fix_ccs_username}e env=fix_ccs_username

SetEnvIfNoCase ^CCS.AUTHENTICATION$ ^(.*)$ fix_ccs_authentication=$1
RequestHeader set CCS-AUTHENTICATION %{fix_ccs_authentication}e env=fix_ccs_authentication

両方のカスタム ヘッダーが $_SERVER 配列に表示されるようになりました。個々のカスタム ヘッダーにはそれぞれ独自のエントリが必要であり、それぞれに異なる名前を使用する必要があることに注意してください。

于 2016-09-27T08:08:20.523 に答える
1

マシンにどれだけアクセスできるかわかりません。ただし、PHP を使用してモジュールを確認できます。

print_r(apache_get_modules());

mod_setenvif と mod_headers がある場合、.htaccess ルールは問題ないはずです

于 2013-07-03T06:29:14.320 に答える
1

引用された 2 行は、Accept(.*)Encoding という名前のヘッダーを Accept-Encoding に置き換えます。ヘッダー名に合わせてこの例を変更する必要があります。

于 2016-03-18T16:48:18.497 に答える