𝗖𝗵𝗿𝗼𝗺𝗲 ilifanya kazi. 𝗙𝗶𝗿𝗲𝗳𝗼𝘅 ilikuwa tupu.
Niliona hitilafu (bug) ya ajabu. Nilifungua ukurasa uleule kwenye vivinjari (browsers) viwili pembeni mwa mwingine.
Katika Chrome, kila kitu kilifanya kazi. Niliona picha, vitufe, na data. Katika Firefox, sikiona kitu. Niliona kadi tupu na ujumbe ukisema "0 results found."
Ilikuwa URL ileile. Ilikuwa build ileile. Ilikuwa mashine ileile.
Chanzo kilikuwa hitilafu ambayo ni vigumu sana kuipata wakati wa uendelezaji (development). Kivinjari kilikuwa kinazuia maombi yangu ya API (API calls). Niliendeleza kazi kwenye kivinjari kimoja tu ambacho hakikuzuia maombi hayo.
Tatizo: Ukurasa unatumia JavaScript kupata data kutoka kwa domain ya upande wa tatu (Supabase). Firefox inatumia Enhanced Tracking Protection. Watumiaji wengi pia hutumia ad blockers kama uBlock Origin. Zana hizi huona domain ya upande wa tatu na kuzuia ombi (request) kabla hata halijatoka kwenye kompyuta.
Kodi haikufeli (crash). Haikuonyesha kosa jekundu (red error) kwenye console. Fetch ilirudisha tu kitu chochote. Kisha kodi yangu ilionyesha hali ya "empty state" kama ilivyoelekezwa. Kwa mtazamaji wa kawaida, ukurasa ulionekana sawa. Ulionekana tu kuwa tupu.
Hitilafu hii haikuonekana kwa sababu mbili:
- Niliendeleza kazi kwenye Chrome, ambayo iliruhusu ombi hilo.
- Uchambuzi wangu (analytics) ulitumia domain ileile ya API. Watumiaji ambao hawakuweza kuona maudhui pia hawakuweza kuhesabiwa kwenye data yangu.
Jinsi nilivyorekebisha:
Nilitumia reverse proxy ili kuhamisha ombi kwenye upande unaoaminika.
Badala ya: mysite.com -> xxxx.supabase.co (Upande wa tatu / Imekozwa)
Nilibadilisha na kuwa: mysite.com -> mysite.com/sb-api (Upande wa kwanza / Inayoaminika)
Kwa kupitisha API kupitia domain yangu mwenyewe, kivinjari hufikiri kuwa ombi hilo ni sehemu ya tovuti yenyewe. Firefox haioni tena kama kifuatiliaji (tracker).
Mambo matatu ya kukumbuka ikiwa utatumia njia hii:
- Angalia websockets zako. Marekebisho rahisi yanaweza kuharibu vipengele vya wakati halisi (real-time features).
- Weka wazi (pin) funguo yako ya uhifadhi wa auth. Kubadilisha URL kunaweza kubadilisha jinsi kivinjari unavyohifadhi vipindi vya kuingia (login sessions).
- Weka maombi ya upande wa seva (server-side calls) kuwa ya moja kwa moja. Huhitaji proxy kwa kodi ambayo haifanyi kazi kwenye kivinjari.
Somo: Acha kudhania "ikiwa inafanya kazi kwenye Chrome, inafanya kazi."
Jaribu tovuti yako kwenye Firefox ukiwa na mipangilio kali ya faragha (strict privacy settings) na ad blocker. Hapo ndipo kuna upande wako ambao huoni (blind spot).