Node.js コミュニティは、Chromium ベースのブラウザで HTTP/2 経由の XHR リクエストを妨げていた長年のバグに対処するための措置をようやく講じましたが、この修正はすべてのユーザーがすぐに利用できるわけではありません。
「HTTP/2 XHR リクエストは Chrome/Chromium では文字通り壊れているが、他のブラウザでは壊れていない」と、niftylettuce という仮名で呼ばれることを希望したソフトウェア開発者は先週、The Registerへの電子メールで説明した。
(XHR)オブジェクトXMLHttpRequest
は、ネットワーク経由でリソースを取得する手段を提供します。最近導入されたFetch APIはより現代的な代替手段を提供していますが、XHRは依然として広く使用されています。
また、現在、約半分の時間 (47.5 %) で、XHR リクエストは HTTP/2 経由で送信されます。HTTP/2 は、HTTP プロトコルが 2015 年に承認した改訂版であり、現在は推奨仕様となっていますが、HTTP/3 も一部使用され始めています。
HTTP/2経由でXHRリクエストを実装するNode.js開発者にとって、問題が発生しています。1月、Niftylettuceは、HTTP/2で動作するNode.jsサーバーへのXHRリクエストが停止し、終了に失敗するという問題を報告しました。しかし、2017年にも同様のバグ報告があり、2019年にも別の苦情があったことから、この問題はさらに古くから発生していたようです。
Node.jsの開発者が「Nodeの設計ミス」を修正した新しいランタイム「Deno 1.0」をリリース
続きを読む
「私にとってこれは深刻かつ重大な欠陥であり、潜在的に脆弱性にもなり得ます」とniftylettuceさんは書いています。「何かが無期限に停止/キュー状態になるのは、決して良いことではありません…」
Shodan 検索に基づくと、この問題の影響を受ける可能性のある Web サイトは少なくとも 125,000 件あると niftylettuce は述べ、Google がランキング アルゴリズムで HTTP/2 を重視しているため、これらのサイトでは Google PageRank、PageInsights、Lighthouse のスコアが低下する可能性が高いと付け加えた。
この問題は、Node.jsリポジトリのGitHub Issuesスレッドで議論されています。そして、6月に提出されたバグ修正用のプルリクエストが、月曜日にコミットされました。
最終的に行動を促したきっかけは、niftylettuceが土曜日にNode.jsとnpm(現在はGitHub傘下)コミュニティのリーダーたちにメールを送信したことだろう。そのメールには、JavaScriptランタイム、特にパッケージ管理システムに影響を与える未修正の問題のリストが含まれていた。これらの問題には、npmパッケージの所有権変更時の通知の欠如(潜在的なセキュリティリスク)、現在対応中とされているその他のnpmの欠陥、そしてXHRバグなどが含まれている。
XHR 修正は、現在の Node v14 およびそれ以前のバージョンに手動でバックポートする必要があるため、Node.js の次期バージョンまたは過去のバージョンにすぐには反映されない可能性があります。
しかし、最終的にはバグは根絶されます。オープンソースプロジェクトに変更を加えたいのであれば、自分で変更を加えるか、他の人を刺激するほどの騒ぎを起こすかのどちらかしかないようです。®