{"revision":"0ed62d2c742f8e20","language":"it","entry":{"id":"browser-apps","group":"guides","kind":"guide","title":"Chiama Veil da un sito","summary":"Usa fetch direttamente per le letture pubbliche e la verifica dei messaggi.","sections":[{"kind":"paragraph","text":"Gli endpoint CORS pubblici accettano richieste da qualsiasi origine senza credenziali. Usa credentials impostato a omit se il tuo wrapper fetch include normalmente i cookie. La Content Security Policy del tuo sito deve consentire connessioni a https://veil.rip."},{"kind":"code","language":"javascript","code":"const options = { credentials: \"omit\" };\nconst response = await fetch(\"https://veil.rip/o/veil.json\", options);\nif (!response.ok) throw new Error(`Veil replied ${response.status}`);\nconst card = await response.json();"},{"kind":"heading","text":"Invia un blocco firma"},{"kind":"code","language":"javascript","code":"const headers = new Headers();\nheaders.set(\"Content-Type\", \"application/json\");\nconst response = await fetch(\"https://veil.rip/v1/verify\", {\n  method: \"POST\",\n  credentials: \"omit\",\n  headers,\n  body: JSON.stringify({ block })\n});\nconst verdict = await response.json();"},{"kind":"paragraph","text":"Il browser gestisce il preflight OPTIONS. Un preflight supportato restituisce 204 e può essere conservato per 600 secondi. Le intestazioni ammesse sono Accept, Content-Type, Cache-Control, If-None-Match e If-Modified-Since. JavaScript può leggere Date, ETag quando presente e Retry-After."},{"kind":"heading","text":"Gestisci gli errori"},{"kind":"paragraph","text":"Leggi lo stato HTTP prima di usare il corpo. Gli errori pubblici di validazione e i limiti sono JSON leggibili. Un endpoint privato o una richiesta con credenziali non supera il controllo CORS del browser. Le scritture firmate, i codici di accoppiamento e gli stati delle prove degli account hanno requisiti di accesso separati."},{"kind":"paragraph","text":"Un’immagine o uno script in cache può conservare le intestazioni precedenti all’attivazione di CORS. Un URL versionato richiede una risposta nuova. Le API JSON pubbliche e la verifica dei messaggi non usano quella cache delle risorse statiche."}],"related":["verify-message","limits"],"errors":[],"documentationUrl":"https://veil.rip/docs/browser-apps?lang=it"}}