Apache ヘッダーのアンダースコアをダッシュ​​に変更する

Apache ヘッダーのアンダースコアをダッシュ​​に変更する

Apache 2.4.27 の背後で実行され、mod_auth_cas を使用してユーザーを認証するアプリケーションがあります。このモジュールは、認証されたユーザーに関する属性をヘッダーに格納します。アンダースコア ( X-CAS-email_primary) が含まれているために削除されるヘッダーが 1 つあるという問題が発生しています。検索した後、以下のコード スニペットを VirtualHost 構成に追加しました。

SetEnvIfNoCase X-CAS-email_primary ^(.*)$ fix_header=$1
RequestHeader set X-CAS-email-primary %{fix_header}e env=fix_header

明らかでない場合は、X-CAS-email_primaryに変更しようとしていますX-CAS-email-primary。このコードは部分的に機能しています。新しいヘッダーは表示されますが、値はありません。

["HTTP_X_CAS_EMAIL_PRIMARY"]=> string(0) ""

設定されていることを確認しましたX-CAS-email_primaryが、何が起こっているのかよくわかりません。何か提案はありますか?

ありがとう!

答え1

の値はRequestHeader set式をサポートしており、式にはリクエスト ヘッダーの値を提供するreq(または) 関数が含まれています。したがって、次の 1 つのディレクティブで必要な処理を実行できます。http

RequestHeader set X-CAS-email-primary "expr=%{req:X-CAS-email_primary}"

深く掘り下げる必要がありますドキュメンテーションこのようなものを探すのは難しいですが、そこにあります。

なぜ設定が機能しなかったのかはわかりませんが、おそらく SetEnvIfNoCase は RequestHeader の後に評価されるのでしょう。ドキュメントでは、それを簡単に理解することはできません。

関連情報