Apache - 在 headers 中将下划线转换为破折号

Apache - Convert underscores to dashes in headers

在一个项目中,必须 运行 CA Webagent Siteminder 向我发送带下划线的遗留 headers。由于 Apache 2.4 下划线已被弃用并被静默删除。

我需要通过 mod_headers 的解决方法,它将 request-header 中的所有下划线 _ 转换为破折号 -

之前

legacy_header_one
legacy_header_two
legacy_header_three

之后

legacy-header-one
legacy-header-two
legacy-header-three

在您的虚拟主机配置中:

SetEnvIfNoCase ^OAM.REMOTE.USER$ ^(.*)$ fix_accept_encoding=
RequestHeader set OAM-REMOTE-USER %{fix_accept_encoding}e env=fix_accept_encoding

如果您使用 mod_wsgi Django 或 Flask,您需要添加:

WSGIPassAuthorization On

这里有两个选择:

  1. Apache Bypass

    # 
    # The following works around a client sending a broken Accept_Encoding
    # header.
    #
    SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=
    RequestHeader set Accept-Encoding %{fix_accept_encoding}e env=fix_accept_encoding
    
  2. Siteminder Bypass

    #its not explicitly stated but im assuming this should be in your WebAgent.conf file
    LegacyVariables="NO"
    

编辑:

我知道这并没有直接回答您从 _ 转换为 - 的问题,但它是一个有助于缓解 Apache 2.4 与 CA Siteminder header 问题的答案。