トピック削除後の無限スクロールリクエスト

Allow members to remove restricted tags / categories from tracking preferences の議論を継続します。

概要

ユーザーが現在表示しているトピックが削除された場合、連続スクロール(上下)を行うと posts.json API呼び出しの無限ループが発生します。これらの呼び出しは一貫して 403 Forbidden エラーを返しますが、アプリケーションは削除を認識せず、存在しないコンテンツの読み込みを停止しようとしないため、継続的なバックグラウンドネットワークアクティビティが発生し、ユーザーエクスペリエンスが損なわれます。

再現手順

  1. 準備(管理者/モデレーターユーザー):
    • トピック削除権限を持つユーザー(例:管理者またはモデレーター)でログインします。
    • スクロールできるコンテンツがあることを確認するために、いくつかの投稿を含む新しいトピックを作成します。
    • このトピックのページURLをすぐに使えるようにしておきます。
  2. ユーザーエクスペリエンス(一般ユーザー):
    • 一般ユーザー(削除権限なし)でログインします。
    • 新しいブラウザタブまたはウィンドウを開きます。
    • ステップ1で作成したトピックに移動します。
    • ブラウザの開発者ツールを開き、「ネットワーク」タブに移動します。クリーンな表示のために、既存のリクエストをクリアします。
  3. 同時削除と操作:
    • 一般ユーザーがトピックページにいる間に(ステップ2)、管理者/モデレーターアカウント(ステップ1)を使用してトピックを削除します。
    • トピックが削除された直後に、一般ユーザーは削除されたトピックのページで上下にスクロールしようとします。
  4. 観察:
    • 一般ユーザーのブラウザのネットワークタブで、https://discourse-url/t/xxxxx/posts.json?xxxxx は削除されたトピックID)への継続的なGETリクエストが送信されていることを確認します。
    • これらのリクエストがすべて一貫して 403 Forbidden HTTPステータスコードを返していることに注意してください。
    • アプリケーションは、トピックが削除されたことを示すメッセージを表示せず、これらの失敗したスクロールリクエストの送信を停止しません。

考えられる結果

  • 私のコミュニティでは、サイバー攻撃を防ぐためにCloudflareを使用していますが、このバグにより一部のユーザーがリクエストを送信しすぎ、レート制限を受けました。
「いいね!」 1

現在のDiscourseのバージョンは何ですか?

最近、同様の報告があり、修正につながりました。

「いいね!」 3