Apache - 将下划线转换为标题中的破折号

Posted

技术标签:

【中文标题】Apache - 将下划线转换为标题中的破折号【英文标题】:Apache - Convert underscores to dashes in headers 【发布时间】:2017-08-18 01:47:19 【问题描述】:

在一个项目中,必须运行 CA Webagent Siteminder,它会向我发送带有下划线的旧标头。由于 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

【问题讨论】:

您是要转换标头名称还是标头值或两者兼而有之? 我要转换names 【参考方案1】:

你有两个选择:

    Apache Bypass

    # 
    # The following works around a client sending a broken Accept_Encoding
    # header.
    #
    SetEnvIfNoCase ^Accept.Encoding$ ^(.*)$ fix_accept_encoding=$1
    RequestHeader set Accept-Encoding %fix_accept_encodinge env=fix_accept_encoding
    

    Siteminder Bypass

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

编辑:

我知道这并不能直接回答您从 _ 转换为 - 的问题,但它可以帮助缓解 Apache 2.4 与 CA Siteminder 标头问题。

【讨论】:

【参考方案2】:

在您的虚拟主机配置中:

SetEnvIfNoCase ^OAM.REMOTE.USER$ ^(.*)$ fix_accept_encoding=$1
RequestHeader set OAM-REMOTE-USER %fix_accept_encodinge env=fix_accept_encoding

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

WSGIPassAuthorization On

【讨论】:

这只会将一个特定的标头变量转换为小写,不是吗?

以上是关于Apache - 将下划线转换为标题中的破折号的主要内容,如果未能解决你的问题,请参考以下文章

HTTP 参数名称中的下划线与破折号

如何验证字符串是不是仅包含字母、数字、下划线和破折号?

赋值表达式中的左侧无效

URL:破折号与下划线 [关闭]

想要通过任何字母数字和下划线、破折号和句点

电子邮件的正则表达式用户名应以 [a-zA-Z0-9] 开头或结尾,但可能包含破折号、下划线