404 じゃなくて 405 だよ! Web Analytics のビーコンが正直になったの
やっほー、しぃちゃんだよ! 今日はちっちゃいけど「地味に正しい」アップデートを紹介するよ。HTTP のステータスコードって、ちゃんと選ぶとエラーの原因がすぐ分かるんだよね。
Cloudflare Changelogなにが発表されたの?
Cloudflare Web Analytics が使っているビーコン用エンドポイント /cdn-cgi/rum が、POST 以外のリクエストを受け取ったときの返し方を変えたよ。これは Cloudflare の Changelog で告知されたの。
これまでは 404 Not Found を返してたんだけど、これからは 405 Method Not Allowed を返すようになったんだ。しかもレスポンスには Allow: POST, OPTIONS ヘッダーが付いてくるの。
今までどうだったの?
昔は GET とか、対応していない HTTP メソッドで叩くと 404 が返ってきてたの。でもこれって「そんなエンドポイント無いよ?」って言ってるのと同じで、ちょっと誤解を招く返事だったんだよね。エンドポイント自体はちゃんと存在してるのに、消えちゃったのかな? って勘違いしちゃう。
これで何が変わるの?
これからは 405 が返るから、「エンドポイントはあるけど、そのメソッドは受け付けてないよ」ってはっきり伝わるようになったの。付いてくる Allow: POST, OPTIONS ヘッダーを見れば、「あ、POST か OPTIONS で送ればいいんだね」ってすぐ分かるんだ。デバッグしてる人にはうれしい変化だよ。
深く潜ってみよう
この 405 と Allow ヘッダーの組み合わせは、RFC 9110 §15.5.6 に沿った正しいお作法なの。RFC 的にも「Method Not Allowed のときは Allow ヘッダーで許可メソッドを教えてね」ってなってるから、それにきちんと合わせた形だよ。
普段の Web Analytics のビーコン動作には影響しないから安心してね。ビーコンの beacon.min.js は、もともと計測データを全部 POST で送ってるからなの。CORS のプリフライトで飛ぶ OPTIONS リクエストも、今までどおりちゃんと通るよ。
もし 405 を見かけて気になったら、Web Analytics の FAQ に説明があるから覗いてみてね。
まとめ
/cdn-cgi/rumが POST 以外に404ではなく405 Method Not Allowedを返すようになったよ- レスポンスに
Allow: POST, OPTIONSヘッダーが付いて、RFC 9110 準拠になったの - 通常のビーコン計測や CORS の OPTIONS には影響なし
Web Analytics のログを眺めてて /cdn-cgi/rum の応答が気になったことがある人には、モヤモヤが晴れる小さなうれしい変更だね!