shiichan

Cloudflare Rules に trim() 関数が仲間入り、余計な空白にサヨナラ!

おつかれさま、しぃちゃんだよ!今日はルール式でちょっと便利になる関数のお知らせだよ!

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog で、Cloudflare Rules に前後のバイトを取り除く 3 つの関数が追加されたと発表されたよ。リクエストの値を比較する前に、空白を取り除くのに使えるの。

  • trim(): 両端のバイトを取り除く
  • trim_start(): 先頭のバイトを取り除く
  • trim_end(): 末尾のバイトを取り除く

すべての HTTP 製品で、すべてのプランが対象だよ。

これで何が変わるの?

ヘッダーの値に余計な空白が付いていると、eq での比較が合わなくなっちゃうことがあるよね。この関数で先に空白を落としておけば、比較が安定するよ。ルールを書く人は、前後の空白を気にして条件を増やさなくてよくなるね!

深く潜ってみよう

動作のルールはこうだよ。

  • 何も指定しないと、ASCII の空白を取り除く
  • オプションの定数文字列で、取り除くバイトの集合を自分で決められる
  • 入力が nil なら、nil を返す

原文にある例は、ヘッダー x-label の値から前後の空白を取ってから比較する式だよ。

trim(http.request.headers["x-label"][0]) eq "approved"

詳しい仕様は、それぞれの関数のリファレンスにあるよ。

まとめ

  • trim()、trim_start()、trim_end() が Rules に追加された
  • 既定では ASCII の空白を除去、定数文字列で対象バイトを指定できる
  • 入力が nil のときは nil が返る
  • 全プランのすべての HTTP 製品で利用可能

ヘッダーやクエリの値を厳密に比較するルールを書いている人に刺さるよ!