𝗖𝗵𝗿𝗼𝗺𝗲 𝗪𝗼𝗿𝗸𝗲𝗱. 𝗙𝗶𝗿𝗲𝗳𝗼𝘅 𝗪𝗮𝘀 𝗘𝗺𝗽𝘁𝘆.
ನಾನು ಒಂದು ವಿಚಿತ್ರ ಬಗ್ ಅನ್ನು ನೋಡಿದೆ. ನಾನು ಒಂದೇ ಪುಟವನ್ನು ಎರಡು ಬ್ರೌಸರ್ಗಳಲ್ಲಿ ಪಕ್ಕ ಪಕ್ಕದಲ್ಲಿ ತೆರೆದಿದ್ದೆ.
Chrome ನಲ್ಲಿ, ಎಲ್ಲವೂ ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡಿತು. ನಾನು ಚಿತ್ರಗಳು, ಬಟನ್ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ನೋಡಿದೆ. Firefox ನಲ್ಲಿ, ನನಗೆ ಏನೂ ಕಾಣಿಸಲಿಲ್ಲ. ಖಾಲಿ ಕಾರ್ಡ್ಗಳು ಮತ್ತು "0 results found" ಎಂಬ ಸಂದೇಶ ಮಾತ್ರ ಕಾಣಿಸಿತು.
ಅದು ಒಂದೇ URL ಆಗಿತ್ತು. ಅದು ಒಂದೇ build ಆಗಿತ್ತು. ಅದು ಒಂದೇ ಮೆಷಿನ್ ಆಗಿತ್ತು.
ಇದಕ್ಕೆ ಕಾರಣ ಅಭಿವೃದ್ಧಿಯ (development) ಸಮಯದಲ್ಲಿ ಕಂಡುಹಿಡಿಯಲು ಅಸಾಧ್ಯವಾದ ಒಂದು ಬಗ್ ಆಗಿತ್ತು. ಬ್ರೌಸರ್ ನನ್ನದೇ API ಕರೆಗಳನ್ನು (calls) ತಡೆಹಿಡಿಯುತ್ತಿತ್ತು. ಅವುಗಳನ್ನು ತಡೆಹಿಡಿಯದ ಬ್ರೌಸರ್ನಲ್ಲಿ ಮಾತ್ರ ನಾನು ಅಭಿವೃದ್ಧಿಪಡಿಸಿದ್ದೆ.
ಸಮಸ್ಯೆ: ಈ ಪುಟವು ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಡೊಮೇನ್ನಿಂದ (third-party domain - Supabase) ಡೇಟಾವನ್ನು ಪಡೆಯಲು JavaScript ಅನ್ನು ಬಳಸುತ್ತದೆ. Firefox 'Enhanced Tracking Protection' ಅನ್ನು ಬಳಸುತ್ತದೆ. ಅನೇಕ ಬಳಕೆದಾರರು uBlock Origin ನಂತಹ ad blockers ಅನ್ನು ಸಹ ಬಳಸುತ್ತಾರೆ. ಈ ಪರಿಕರಗಳು ಮೂರನೇ ವ್ಯಕ್ತಿಯ ಡೊಮೇನ್ ಅನ್ನು ಗುರುತಿಸಿ, ವಿನಂತಿಯು (request) ಕಂಪ್ಯೂಟರ್ನಿಂದ ಹೊರಹೋಗುವ ಮೊದಲೇ ಅದನ್ನು ತಡೆಹಿಡಿಯುತ್ತವೆ.
ಕೋಡ್ ಕ್ರ್ಯಾಶ್ ಆಗಲಿಲ್ಲ. ಕನ್ಸೋಲ್ನಲ್ಲಿ ಯಾವುದೇ ಕೆಂಪು ಎರರ್ (error) ತೋರಿಸಲಿಲ್ಲ. fetch ಕೇವಲ ಏನನ್ನೂ ಹಿಂತಿರುಗಿಸಲಿಲ್ಲ. ನಂತರ ನನ್ನ ಕೋಡ್ ಸೂಚಿಸಿದಂತೆ 'empty state' ಅನ್ನು ತೋರಿಸಿತು. ಸಾಮಾನ್ಯ ವೀಕ್ಷಕರಿಗೆ, ಪುಟವು ಸರಿಯಾಗಿಯೇ ಕಂಡಿತು. ಅದು ಕೇವಲ ಖಾಲಿ ಇರುವಂತೆ ಕಂಡಿತು ಅಷ್ಟೆ.
ಈ ಬಗ್ ಎರಡು ಕಾರಣಗಳಿಂದಾಗಿ ಅದೃಶ್ಯವಾಗಿತ್ತು:
- ನಾನು Chrome ನಲ್ಲಿ ಅಭಿವೃದ್ಧಿಪಡಿಸಿದೆ, ಅದು ಕರೆಯನ್ನು ಅನುಮತಿಸಿತ್ತು.
- ನನ್ನ ಅನಾಲಿಟಿಕ್ಸ್ (analytics) ಅದೇ API ಡೊಮೇನ್ ಅನ್ನು ಬಳಸುತ್ತಿತ್ತು. ವಿಷಯವನ್ನು ನೋಡಲು ಸಾಧ್ಯವಾಗದ ಬಳಕೆದಾರರನ್ನು ನನ್ನ ಡೇಟಾದಲ್ಲಿ ಎಣಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.
ನಾನು ಇದನ್ನು ಹೇಗೆ ಸರಿಪಡಿಸಿದೆ:
ವಿನಂತಿಯನ್ನು ನಂಬಿಕಸ್ತ (trusted) ಕಡೆಗೆ ವರ್ಗಾಯಿಸಲು ನಾನು reverse proxy ಅನ್ನು ಬಳಸಿದೆ.
ಬದಲಾಗಿ: mysite.com -> xxxx.supabase.co (Third-party / Blocked)
ನಾನು ಇದನ್ನು ಬಳಸಿದೆ: mysite.com -> mysite.com/sb-api (First-party / Trusted)
API ಅನ್ನು ನನ್ನ ಸ್ವಂತ ಡೊಮೇನ್ ಮೂಲಕ ರೌಟ್ ಮಾಡುವುದರಿಂದ, ವಿನಂತಿಯು ಸೈಟ್ನ ಭಾಗವೇ ಎಂದು ಬ್ರೌಸರ್ ಭಾವಿಸುತ್ತದೆ. Firefox ಇದನ್ನು ಇನ್ನು ಮುಂದೆ ಟ್ರ್ಯಾಕರ್ (tracker) ಎಂದು ಪರಿಗಣಿಸುವುದಿಲ್ಲ.
ನೀವು ಈ ವಿಧಾನವನ್ನು ಬಳಸುವುದಾದರೆ ನೆನಪಿಡಬೇಕಾದ ಮೂರು ವಿಷಯಗಳು:
- ನಿಮ್ಮ websockets ಅನ್ನು ಪರಿಶೀಲಿಸಿ. ಸರಳವಾದ rewritesಗಳು real-time ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಹಾಳುಮಾಡಬಹುದು.
- ನಿಮ್ಮ auth storage key ಅನ್ನು ಪಿನ್ ಮಾಡಿ. URL ಬದಲಾಯಿಸುವುದು ಬ್ರೌಸರ್ ಲಾಗಿನ್ ಸೆಷನ್ಗಳನ್ನು (login sessions) ಸಂಗ್ರಹಿಸುವ ವಿಧಾನವನ್ನು ಬದಲಾಯಿಸಬಹುದು.
- ಸರ್ವರ್-ಸೈಡ್ ಕರೆಗಳನ್ನು ನೇರವಾಗಿ ಇರಿಸಿ. ಬ್ರೌಸರ್ನಲ್ಲಿ ಚಲಿಸದ ಕೋಡ್ಗೆ ನಿಮಗೆ proxy ಅಗತ್ಯವಿಲ್ಲ.
ಪಾಠ: "Chrome ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುತ್ತದೆ ಎಂದರೆ, ಅದು ಎಲ್ಲೆಡೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ" ಎಂದು ಭಾವಿಸುವುದನ್ನು ನಿಲ್ಲಿಸಿ.
ಕಟ್ಟುನಿಟ್ಟಿನ ಗೌಪ್ಯತೆ ಸೆಟ್ಟಿಂಗ್ಗಳು (privacy settings) ಮತ್ತು ad blocker ಇರುವ Firefox ನಲ್ಲಿ ನಿಮ್ಮ ಸೈಟ್ ಅನ್ನು ಪರೀಕ್ಷಿಸಿ. ಅದೇ ನಿಮ್ಮ ನಿಜವಾದ ಅಂಧಬಿಂದು (blind spot).