Access to fetch at '...' from origin '...' has been blocked by CORS policyNo 'Access-Control-Allow-Origin' header is present on the requested resourceThe request works in curl and Postman but not in the browserKusi, żeby potraktować to jako problem konfiguracji – dodać origin i wypuścić funkcję. Ale zastanów się, co oznacza udane wywołanie z przeglądarki. Klucz podróżuje w nagłówku, który narzędzia deweloperskie użytkownika pokazują w całości. Jest w bundlu, jeśli go wkleiłeś, i w zakładce sieci, jeśli nie. Każdy, kto otworzy stronę, go ma.
Klucze wyciekające w ten sposób to nie teoretyczne ryzyko. Publiczne wyszukiwarki kodu wyciągają je bez przerwy, a skradziony klucz do API rozliczanego za tokeny zamienia się wprost w cudzy rachunek na twoim koncie. Dlatego większość dostawców ustawia restrykcyjny allow-origin zamiast * – to nie przeoczenie, tylko świadoma odmowa.
Wzorzec proxy to trzy, cztery linie kodu serwera: strona wywołuje twój backend, backend trzyma klucz i wywołuje dostawcę. Daje ci to też miejsce na limity zapytań i wydatków na użytkownika, które i tak chcesz mieć.
Zapytaj endpoint, jakie originy faktycznie dopuszcza:
curl -s -I -X OPTIONS 'YOUR_BASE_URL/chat/completions' \
-H 'Origin: https://example.com' \
-H 'Access-Control-Request-Method: POST' \
| grep -i 'access-control'
Jeśli Access-Control-Allow-Origin wraca z konkretną domeną zamiast *, wywołania z przeglądarki z twojego originu nie zadziałają i żadna zmiana po stronie klienta tego nie zmieni.
/api/chat we własnej domenie; ta obsługa dodaje nagłówek Authorization i przekazuje zapytanie dalej. Bez udziału CORS, bo przeglądarka rozmawia tylko z twoim originem.NEXT_PUBLIC_, VITE_ i REACT_APP_ są wkompilowywane w wysyłany JavaScript. Klucz umieszczony tam jest opublikowany, a nie skonfigurowany.https://apiclan.us – klucze mają żyć na serwerze. Konfiguracja base URL dla klientów serwerowych jest w szybkim starcie.Ostatnio sprawdzono 2026-10-01. Napisane na podstawie problemów zdiagnozowanych na działającej bramce zgodnej z OpenAI, a nie zebrane z innych stron.