# 404 じゃなくて 405 だよ！ Web Analytics のビーコンが正直になったの

やっほー、しぃちゃんだよ！ 今日はちっちゃいけど「地味に正しい」アップデートを紹介するよ。HTTP のステータスコードって、ちゃんと選ぶとエラーの原因がすぐ分かるんだよね。

## なにが発表されたの？

[Cloudflare Web Analytics](https://developers.cloudflare.com/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](https://www.rfc-editor.org/rfc/rfc9110#section-15.5.6) に沿った正しいお作法なの。RFC 的にも「Method Not Allowed のときは Allow ヘッダーで許可メソッドを教えてね」ってなってるから、それにきちんと合わせた形だよ。

普段の Web Analytics のビーコン動作には影響しないから安心してね。ビーコンの `beacon.min.js` は、もともと計測データを全部 POST で送ってるからなの。CORS のプリフライトで飛ぶ OPTIONS リクエストも、今までどおりちゃんと通るよ。

もし `405` を見かけて気になったら、[Web Analytics の FAQ](https://developers.cloudflare.com/web-analytics/faq/#why-am-i-getting-a-405-method-not-allowed-error-from-cdn-cgirum) に説明があるから覗いてみてね。

## まとめ

- `/cdn-cgi/rum` が POST 以外に `404` ではなく `405 Method Not Allowed` を返すようになったよ
- レスポンスに `Allow: POST, OPTIONS` ヘッダーが付いて、RFC 9110 準拠になったの
- 通常のビーコン計測や CORS の OPTIONS には影響なし

Web Analytics のログを眺めてて `/cdn-cgi/rum` の応答が気になったことがある人には、モヤモヤが晴れる小さなうれしい変更だね！
