Azure 应用程序网关自定义 Header 规则

Azure Application Gateway Custom Header Rules

我们有一个 Azure 应用程序网关设置和工作。我们要为名为 X.header 的 header 添加符合以下条件的规则。

  1. 如果传入请求中根本不存在 X - 则让请求通过
  2. 如果 X 存在但为空或包含 white-spaces - 则阻止请求
  3. 如果 X 存在但包含至少 1 个非 space 字符 - 然后让请求通过

我使用了以下模式 .+(任意字符 0 多次)- 这仅满足要点 1 但不满足要点 2(如果 header 则不会阻止请求为空白或有 spaces) 和 3(如果 header 包含非 space 字符,如 p,则请求失败)。

我需要使用什么类型的正则表达式来满足所有三个条件? 我原本希望 .+ 至少满足要点 1 和 3。

https://docs.microsoft.com/en-us/azure/application-gateway/rewrite-http-headers-url#check-for-the-presence-of-a-header

使用

^ *[^ ].*$

解释

--------------------------------------------------------------------------------
  ^                        the beginning of the string
--------------------------------------------------------------------------------
   *                       ' ' (0 or more times (matching the most
                           amount possible))
--------------------------------------------------------------------------------
  [^ ]                     any character except: ' '
--------------------------------------------------------------------------------
  .*                       any character except \n (0 or more times
                           (matching the most amount possible))
--------------------------------------------------------------------------------
  $                        before an optional \n, and the end of the
                           string