Chrome работал. Firefox был пустым.

Я столкнулся со странным багом. Я открыл одну и ту же страницу в двух браузерах рядом друг с другом.

В Chrome всё работало. Я видел изображения, кнопки и данные. В Firefox я не видел ничего. Я видел пустые карточки и сообщение «0 результатов найдено».

URL был тот же. Сборка та же. Машина та же.

Причиной был баг, который почти невозможно обнаружить во время разработки. Браузер блокировал мои собственные API-вызовы. Я вел разработку только в том браузере, который их не блокировал.

Проблема: Страница использует JavaScript для получения данных со стороннего домена (Supabase). Firefox использует Enhanced Tracking Protection. Многие пользователи также используют блокировщики рекламы, такие как uBlock Origin. Эти инструменты видят сторонний домен и блокируют запрос еще до того, как он покинет компьютер.

Код не «падал». В консоли не появлялось красных ошибок. fetch просто ничего не возвращал. После этого мой код отображал запасное состояние «пустого экрана» (empty state), как и было предусмотрено. Для случайного наблюдателя страница выглядела нормально. Она просто выглядела пустой.

Этот баг был невидим по двум причинам:

Как я это исправил:

Я использовал обратный прокси (reverse proxy), чтобы перевести запрос на «доверенную сторону».

Вместо: mysite.com -> xxxx.supabase.co (Сторонний / Заблокирован)

Я переключился на: mysite.com -> mysite.com/sb-api (Собственный / Доверенный)

Пропуская API через мой собственный домен, браузер считает, что запрос является частью самого сайта. Firefox больше не видит в нем трекер.

Три вещи, которые стоит помнить, если вы используете этот метод:

Урок: Перестаньте полагаться на принцип «если работает в Chrome, значит работает везде».

Тестируйте свой сайт в Firefox со строгими настройками конфиденциальности и блокировщиком рекламы. Это ваше реальное слепое пятно.

Источник: https://dev.to/henry_dan_81513dd35a2f540/chrome-showed-the-data-firefox-showed-nothing-the-api-was-being-blocked-4mpn