Slack によるプレビュー目的の GET リクエストを判定する方法
2024-08-04
Slack のメッセージにハイパーリンクを埋め込むと、メッセージの下にプレビューを表示するために Slack がリンク先に GET リクエストを飛ばす。
メッセージに埋め込むリンクが何らかの API や PV を計測したいページである場合、Slack が自動で行うこのような GET リクエストを無視する挙動を実現したくなる。
このような GET リクエストを無視しない場合、API のエンドポイントを共有するつもりで URL をメッセージに記載しただけなのに API サーバー上で処理が実行されたり、PV が不当に高く集計されるといった不都合が生じる。
プレビューのために行われる GET リクエストの header の
User-Agent
には “Slackbot-LinkExpanding 1.0 (+https://api.slack.com/robots)”
のような値が設定される。
したがって、開発した API や PV を集計するクエリ側で、User-Agent
の値に基づいて処理・集計の対象外とするロジックを実装すれば、前記の不都合を回避できる。