API-ji trećih strana (b77.http)
Pozovi bilo koji HTTPS API sa svojim tajnim ključevima, a da ih ne otkriješ.
b77.http.fetch poziva HTTPS API treće strane s poslužitelja builder77. Tvoji API ključevi spremljeni su u Postavke → Tajni ključevi, a u kodu se pišu kao {{secret:NAME}}: poslužitelj ih sam umeće, pa nikad ne dolaze do preglednika.
const res = await b77.http.fetch('https://api.openai.com/v1/chat/completions', {
method: 'POST', // default GET
headers: { Authorization: 'Bearer {{secret:OPENAI_API_KEY}}' },
body: { model: 'gpt-4o-mini', messages: [{ role: 'user', content: 'Hi!' }] }, // object → JSON, or a string
});
if (res.ok) console.log(res.data); // { ok, status, headers, body (text), data (parsed JSON or null) }Svaki poziv troši 1 kredit za integracije. Samo https, vremensko ograničenje od 15 sekundi, odgovori do 1 MB. Ako API vrati tvoj ključ, on se zamjenjuje s [secret] prije nego što tvoja aplikacija vidi odgovor.
Pravila za svaki tajni ključ
Svatko tko koristi tvoju aplikaciju može slati pozive s tajnim ključem — a da ga ne vidi. Zato svaki ključ radi samo onako kako dopustiš:
- Dopušteni hostovi — jedini poslužitelji kojima se ikad šalje (npr.
api.openai.com;*.example.comobuhvaća i poddomene). - Dopuštene metode — prema zadanim postavkama GET i POST.
- Dopuštene putanje — neobavezni prefiksi putanja, poput
/v1/chat/. Prazno znači bilo koja putanja. - Gdje se ključ smije nalaziti — prema zadanim postavkama samo u zaglavlju za autentifikaciju (Authorization, X-Api-Key, Api-Key, X-Goog-Api-Key i slična). Parametri upita (po nazivu, npr.
key), putanja URL-a i tijelo zahtjeva isključeni su dok ih ne uključiš.
Poziv koji krši pravilo odbija se sa statusom 403 prije nego što se išta pošalje.
Ključevi u URL-u ili tijelu zahtjeva
Biraj API-je koji ključ primaju u zaglavlju. Neki ga umjesto toga stavljaju u adresu — dopusti točno to mjesto i suzi putanju:
// Settings → Secrets: TELEGRAM_TOKEN, host api.telegram.org, "In the URL path" on,
// allowed path /bot{{secret:TELEGRAM_TOKEN}}/sendMessage
await b77.http.fetch('https://api.telegram.org/bot{{secret:TELEGRAM_TOKEN}}/sendMessage', {
method: 'POST',
body: { chat_id: 12345, text: 'New booking!' },
});Opciju U tijelu zahtjeva dopusti samo ako je API zahtijeva: tada bi svatko tko koristi tvoju aplikaciju mogao upisati ključ u bilo što što taj API sprema (poruku, bilješku, javnu datoteku) i ponovno ga pročitati.