【问题标题】:What's the opposite of "Header append Vary User-Agent", how to remove the "User-Agent" string from "Vary"?“Header append Vary User-Agent”的反义词是什么,如何从“Vary”中删除“User-Agent”字符串?
【发布时间】:2014-12-01 12:42:47
【问题描述】:

我知道我可以将 User-Agent 添加到 Vary 在我的 .htacess 中使用此行的 http 标头:

Header append Vary User-Agent

但如果 User-Agent 已经设置,我该如何从 Vary 标头中删除它?

根据mod_headers doc 有一个append 选项,但没有等效的“删除”选项。

【问题讨论】:

    标签: apache .htaccess mod-headers


    【解决方案1】:

    下面的简单答案,但你需要一些恶作剧来避免发送一个空的 Vary: 标题(尽量避免它出于妄想症)

    Header edit Vary (.*)User-Agent(.*) $1$2
    # Remove leading or trailing ',' without making things complex above
    Header edit Vary ^,?(.*),?$ $1
    # 2.4-only: remove empty Vary header
    Header unset Vary "expr=resp('Vary') =~ /^$/"
    

    x-never-match 可以是任何不太可能使用的标头名称。

    【讨论】:

    • 谢谢!使用edit 是个好主意,但是如果在User-Agent 之前有一个, 就像Vary: Accept-Encoding, User-Agent 一样呢?
    • 我也认为,我不能接受一个空的Vary 也不能接受一个虚拟的Vary 标头,因为我的主机在apache 前面运行了一个清漆缓存。清漆不适用于此。 if (is Vary empty) then Header unset Vary 可能吗?我不知道如何测试空的Vary 标头
    • 我认为有一个尾随或前导斜杠是安全的,我对尝试使单个正则表达式避开捕获中的那些并使其成为真正的眼睛破坏者并不感到非常兴奋。在 2.4 中,mod_headers 可以使用 expr= 条件,您可以检查它是否正是 ^User-Agent$ 并取消设置。如果您使用的是 2.4,我可能可以测试语法并将其添加到答案中。
    • 为 2.4 编辑并删除前导/尾随逗号(但在单独的调用中)
    【解决方案2】:

    虽然这不像删除特定的 User-Agent 关键字那样通用,但它可以完成工作:

    Header set Vary "Accept-Encoding"
    

    这将覆盖您现有的标头,因此 vary 标头将只有 Accept-Encoding

    【讨论】:

      猜你喜欢
      • 2016-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多