web-dev-qa-db-ja.com

ヘッダーのApacheアンダースコアが上書きされます

ヘッダーx-user_typeを設定するサービスがあります。 Apache2.4.33はこれを使用できないため、.htaccessで次のように変換します。

<IfModule mod_headers.c>
    <IfModule mod_setenvif.c>
        SetEnvIfNoCase ^x.user.type$ ^(.*)$ fix_x-user_type=$1
        RequestHeader set x-user-type %{fix_x-user_type}e env=fix_x-user_type
    </IfModule>
</IfModule>

しかし、リクエスト内でx-user-typeを指定すると、レスポンスのx-user-typeの値が上書きされます

例:

  • 何も提供されていません-> x-user-type = application(これはサービスによって設定されます)
  • x-user_type = test-> x-user-type = application(サービスによって設定されるため、これで問題ありません)
  • x-user-type = test-> x-user-type = test(これもアプリケーションである必要があります)

これはApache構成の問題だと思います。誰かが私がこれを解決するのを手伝ってくれる?

2
DasBen

これに関する私自身の問題を修正しました: https://serverfault.com/a/900745/490242

見積もり:

RequestHeader setの値は式をサポートし、式にはreq(またはhttp)関数が含まれます。これにより、要求ヘッダーの値が得られます。したがって、この1つのディレクティブは、必要なことを実行する必要があります。

RequestHeader set X-CAS-email-primary "expr=%{req:X-CAS-email_primary}"この種のものを見つけるには、ドキュメントを深く掘り下げる必要がありますが、それはそこにあります。

構成が機能しなかった理由はわかりませんが、SetEnvIfNoCaseはRequestHeaderの後に評価されると思います。ドキュメントでは、それを簡単に理解することはできません。

SetEnvIfNoCaseも私の問題だったようです。

2
DasBen