Berikut adalah beberapa saran dari AI:
- Token sesi anonim diblokir oleh pembatasan cookie/storage. Banyak widget chat semacam ini secara diam-diam membuat ID sesi (cookie atau localStorage) saat pertama kali dimuat dan melampirkannya ke setiap panggilan API. Jika browser rekan Anda memblokir cookie pihak ketiga atau penyimpanan (proteksi pelacakan Safari/Firefox, mode privat/incognito, kebijakan browser yang dikelola perusahaan, atau ekstensi seperti uBlock/Privacy Badger/Brave Shields), token tersebut tidak pernah dibuat atau dikirim — maka panggilan API akan terlihat seperti permintaan yang tidak terautentikasi dan ditolak sebagai "unauthorised."
- Pemeriksaan Origin/Referrer gagal. Jika backend memvalidasi bahwa permintaan berasal dari paratext.org itu sendiri (langkah anti-penyalahgunaan ringan yang umum sebagai pengganti autentikasi sungguhan), apa pun yang mengubah cara halaman dimuat — filter web/proksi perusahaan yang menulis ulang atau menghapus header, proksi terjemahan, "Reader mode," atau membuka tautan di dalam browser bawaan aplikasi lain — dapat merusak pemeriksaan tersebut meskipun halaman tetap tampil dengan baik.
- Proksi perusahaan/pemeriksaan SSL yang menghapus header. Rekan-rekan yang berafiliasi dengan SIL sering berada di jaringan yang dikelola dengan inspeksi paket mendalam atau penyaringan konten yang menghapus header Authorization, Cookie, atau header khusus pada panggilan API keluar, sementara antarmuka chat itu sendiri tetap dimuat dengan normal dari CDN.
- Kunci API backend bersama mencapai batas laju/kota. Jika widget meneruskan ke sesuatu seperti API Claude menggunakan satu kunci server-side bersama, lonjakan lalu lintas demo bersamaan (Anda + 3 rekan yang semua mengirim prompt dalam satu menit) dapat memicu batas laju yang dilaporkan oleh backend sebagai "unauthorised" alih-alih "too many requests."
Cara tercepat untuk mengonfirmasi: minta satu rekan membuka DevTools browser → tab Network, coba lagi sebuah prompt, klik permintaan yang gagal, dan periksa kode status HTTP sebenarnya (401 vs 403 vs 429) dan isi respons — itu akan memberi tahu kami secara definitif mana dari masalah ini yang terjadi. Jika Anda bisa mendapatkan informasi tersebut, saya dapat menentukan penyebabnya secara tepat.
Here are some suggestions from AI:
- Anonymous session token blocked by cookie/storage restrictions. Many of these chat widgets silently mint a session ID (cookie or localStorage) on first load and attach it to every API call. If a colleague's browser blocks third-party cookies or storage (Safari/Firefox tracking protection, private/incognito mode, corporate-managed browser policy, or an extension like uBlock/Privacy Badger/Brave Shields), that token never gets created or sent — the API call then looks like an unauthenticated request and gets rejected as "unauthorised."
- Origin/Referrer check failing. If the backend validates that requests come from paratext.org itself (a common lightweight anti-abuse measure instead of real auth), anything that changes how the page is loaded — a corporate web filter/proxy that rewrites or strips headers, a translation proxy, "Reader mode," or opening the link inside another app's in-app browser — can break that check even though the page renders fine.
- Corporate proxy/SSL inspection stripping headers. SIL-affiliated colleagues are often on managed networks with deep packet inspection or content filtering that strips Authorization, Cookie, or custom headers on outbound API calls, while the chat UI itself still loads normally from a CDN.
- Shared backend API key hitting a rate/quota limit. If the widget proxies to something like Claude's API using one shared server-side key, a burst of simultaneous demo traffic (you + 3 colleagues all firing prompts within a minute) could trip a rate limit that the backend reports as "unauthorised" rather than "too many requests."
Fastest way to confirm: have one colleague open browser DevTools → Network tab, retry a prompt, click the failed request, and check the actual HTTP status code (401 vs 403 vs 429) and response body — that will tell us definitively which of these it is. If you can grab that, I can pin down the cause precisely.
Diterjemahkan secara otomatis dari English