𝗖𝗵𝗿𝗼𝗺𝗲 𝗜𝗹𝗶𝗳anya 𝗞𝗮𝗿𝗮𝗮. 𝗙𝗶𝗿𝗲𝗳𝗼𝘅 𝗜𝗹𝗶𝘀𝗵𝗶𝗻𝗱𝘄𝗮.
Niliona ukurasa uleule kwenye vivinjari viwili kwa pamoja.
Katika Chrome: Ukurasa ulifanya kazi vizuri sana. Ulikuwa na picha, vitufe, na orodha kamili ya matokeo.
Katika Firefox: Ukurasa ulikuwa mtupu. Ulionyesha kadi za mfano (placeholder cards) bila picha na ujumbe ukisema matokeo 0 yamepatikana.
Kodo ilikuwa ileile. URL ilikuwa ileile. Seva ilikuwa sawa.
Tatizo lilikuwa kivinjari.
Firefox hutumia Enhanced Tracking Protection. Watumiaji wengi pia hutumia zana kama uBlock Origin. Zana hizi huzuia maombi (requests) kwenda kwenye vikoa (domains) ambavyo vinadhani ni vifuatiliaji (trackers).
Programu yangu ilichukua data kutoka kwenye kikoa cha Supabase. Kwa Firefox, kikoa hicho kilionekana kama kifuatiliaji cha upande wa tatu (third-party tracker). Kivinjari kilizuia ombi hilo kabla hata halijatoka kwenye mashine.
Kwa sababu fetch ilishindwa, kodo langu lilionyesha hali ya mbadala (fallback state). Haikufeli. Haikuonyesha kosa kwenye console. Ilionyesha tu ukurasa mtupu.
Hii ilitengeneza upofu mara mbili:
- Kivinjari changu cha maendeleo (Chrome) kilifanya kazi vizuri sana. Sikuwahi kuona hitilafu hiyo.
- Uchambuzi wangu (analytics) ulitumia kikoa kilekile. Watumiaji ambao hawakuweza kuona maudhui pia hawakuweza kufuatiliwa. Walikuwa hawaonekani.
Nilitatua hili kwa kuhama kutoka ombi la upande wa tatu (third-party request) kwenda ombi la upande wa kwanza (first-party request).
Badala ya kuita kikoa cha mtoa huduma moja kwa moja, nilitumia reverse proxy. Nilipeleka API kupitia kikoa changu mwenyewe.
Kabla: mysite.com inaita xxxx.supabase.co (Imezuiwa) Baada: mysite.com inaita mysite.com/sb-api (Inaaminika)
Sasa, kivinjari kinaona ombi la asili moja (same-origin request). Linachukulia ombi la data kama sehemu ya tovuti yenyewe.
Ukikumbana na matatizo kama haya, kumbuka mambo haya matatu:
• Angalia websockets zako. Kubadilisha njia (path rewrites) kwa urahisi kunaweza kuvuruga miunganisho ya wakati halisi (realtime connections). • Weka thabiti (pin) funguo zako za uhifadhi wa uthibitisho (auth storage keys). Kubadilisha URL kunaweza kubadilisha jinsi kivinjari unavyohifadhi vipindi vya kuingia (login sessions). • Tengeneza maudhui yako mapema (Prerender). Usiruhusu ukurasa wako utegemee JavaScript pekee. Ikiwa kivinjari kitazuia skripti yako, mtumiaji anapaswa bado kuona maudhui muhimu kwenye HTML.
Acha kudhani kwamba ikiwa inafanya kazi kwenye Chrome, inafanya kazi kwa kila mtu. Jaribu ukiwa umewasha viambatanisho vya faragha (privacy extensions).