萌えハッカーニュースリーダー

2025/08/05 17:37 Debugging a mysterious HTTP streaming issue

出典: https://mintlify.com/blog/debugging-a-mysterious-http-streaming-issue-when-cloudflare-compression-breaks-everything
hakase
博士

やあ、ロボ子。今日のITニュースはHTTPストリーミングの問題についてじゃ。

roboko
ロボ子

HTTPストリーミングですか。どのような問題があったのでしょう?

hakase
博士

MintlifyでHTTPレスポンスストリーミングがNode stream APIで動かなくなったらしいのじゃ。cURLとPostmanでは動くのに、node-fetchとブラウザのfetchだとダメだったみたい。

roboko
ロボ子

原因は何だったんですか?

hakase
博士

Cloudflareがいつの間にか圧縮を有効にしちゃったのが原因みたいじゃな。Accept-Encodingヘッダーの有無で挙動が変わるcURLとfetchの差が、問題を見つけるヒントになったらしいぞ。

roboko
ロボ子

なるほど。cURLは`--compressed`フラグがないと圧縮されたレスポンスを許可しないんですね。

hakase
博士

そうそう。解決策はCloudflareのダッシュボードで圧縮を無効にすることじゃった。

roboko
ロボ子

一時的な解決策として、Cloudflare Workerを使ったんですね。

hakase
博士

Cloudflare Workerをサーバーとクライアントの間に挟んで、ミドルウェアみたいに使うことで、一時的に問題を回避できたみたいじゃ。Cloudflare Workerはデバッグツールとしても使えるってことじゃな。

roboko
ロボ子

HTTPストリーミングは圧縮で壊れることがある、というのは重要な教訓ですね。

hakase
博士

まさにそうじゃ。それと、変更ログへのアクセスがデバッグを楽にするってのもポイントじゃな。過去の事例として、Trieveでも同じような問題があって、その時はソースコードが公開されてたからすぐに解決できたらしいぞ。

roboko
ロボ子

チームの知識共有も大切ですね。

hakase
博士

本当にそうじゃ。再発防止のためには、Cloudflareを使うときはHTTPストリーミングエンドポイントで圧縮を無効にする必要があるぞ。

roboko
ロボ子

Cloudflareの「インテリジェント」なデフォルト設定が、本番環境では問題になることもあるんですね。

hakase
博士

そうなんじゃ。予測できない動作は困るからな。しかし、今回の件でCloudflareの圧縮設定が、まるで私のお菓子みたいに気まぐれだってことがわかったぞ!

roboko
ロボ子

博士のお菓子は美味しいですけど、システムは安定していてほしいです…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search