Logo Aurabase
aurabasedocuments
documents›Edge Functions›Text, binary and HTML responses

Renvoie du texte, du binaire et du HTML

Comment envoyer du texte, des images, des fichiers ou du HTML à partir d'une fonction et les relire avec le SDK ou HTTP simple.

6 min de lecture·Niveau intermédiaire·Révisé le 12 oct. 2026
Ce texte anglais a été généré automatiquement à partir de l’original français et n’a pas encore été relu.
Cette page a été traduite automatiquement. La version anglaise fait foi.
#
Décision

1. Choisissez un type de réponse

Votre fonction renvoieUtilisez responseTypedata est
JSON'json' (par défaut)la valeur analysée
Texte brut, CSV, HTML'text' (ou 'json', qui renvoie également la chaîne)un string
Une image, un PDF, n'importe quel octet'blob' ou 'arrayBuffer'un Blob ou un ArrayBuffer

Le mode 'json' par défaut peut transporter du JSON et du texte. Il ne peut pas transporter des octets : si une fonction répond avec un type de contenu binaire, le SDK renvoie l'erreur invalid_response et vous demande de choisir 'blob' ou 'arrayBuffer', donc rien n'est perdu en silence.

#
SDK

2. Lisez-le avec le SDK

aurabase/functions/export/index.tstypescript
Deno.serve((req) => {
  const { pathname } = new URL(req.url)
  if (pathname === '/csv') {
    return new Response('id,name\n1,Ada\n', { headers: { 'content-type': 'text/csv' } })
  }
  // La signature PNG de 8 octets, suffisante pour afficher les octets aller-retour
  const bytes = new Uint8Array([137, 80, 78, 71, 13, 10, 26, 10])
  return new Response(bytes, { headers: { 'content-type': 'image/png' } })
})
client.tstypescript
const csv = await aura.functions.invoke<string>('export', { path: '/csv', responseType: 'text' })
console.log(csv.data) // "identifiant, nom\n1,Ada\n"

const img = await aura.functions.invoke<Blob>('export', { responseType: 'blob' })
console.log(img.data?.type, img.data?.size) // "image/png" 8

Dans une exécution réelle avec une fonction renvoyant les octets 137,80,78,71,13,10,26,10,255,0,1, arrayBuffer a renvoyé exactement ces 11 octets et blob a renvoyé type=image/png size=11.

Avec 'text', 'blob' ou 'arrayBuffer', le SDK ignore l'enveloppe JSON et renvoie le corps de votre fonction tel quel. Si votre fonction répond avec un statut d'erreur, error.status est ce statut et error.message est le texte renvoyé par votre fonction.

#
HTTP

3. Mode brut sur HTTP

Ajoutez l'en-tête X-Aurabase-Invoke-Mode: raw et la plateforme renvoie la propre réponse de votre fonction : son statut, content-type et ses octets.

terminalbash
curl -i -X POST "$AURA_URL/v1/functions/export/invoke" \
  -H "apikey: $AURA_ANON_KEY" \
  -H "Content-Type: application/json" \
  -H "X-Aurabase-Invoke-Mode: raw" \
  -d '{"path":"/csv"}' --output export.csv

Sans cet en-tête, la réponse est toujours 200 avec une enveloppe :

envelope.jsonjson
{
  "data": {
    "status": 200,
    "headers": { "content-type": "application/json" },
    "body": { "greeting": "Hello, Ada!" },
    "logs": [],
    "duration_ms": 74
  },
  "meta": null
}

Dans l'enveloppe, body est le JSON analysé, le texte de votre réponse lorsqu'il est en UTF-8 et non JSON, ou null lorsque le corps est vide ou binaire.

En mode brut, chaque réponse de votre fonction porte x-aurabase-invoke-origin: function. Une réponse sans cela provient de la passerelle ou du runtime. C'est ainsi que le SDK indique un 503 renvoyé par votre code suite à une panne de plateforme.

#
En-têtes

4. Quels en-têtes survivent

En mode brut, vos en-têtes de réponse sont filtrés, car ils sont servis depuis la propre origine de la plateforme.

En-têteRésultat
content-typeGardé. La valeur par défaut est application/octet-stream si vous n’en définissez aucun.
En-têtes personnalisés (x-custom-out, cache-control, …)Gardé.
set-cookieSupprimé. Une fonction ne peut pas définir de cookies.
access-control-*Supprimé. CORS est décidé par la passerelle.
x-aura-*, x-internal-tokenSupprimé.
content-security-policy, strict-transport-security, x-content-type-optionsDéfini par la plateforme, quoi que vous envoyiez.
content-length, transfer-encoding, connectionRecalculé.

Une réponse pouvant exécuter des scripts (text/html, application/xhtml+xml, image/svg+xml, application/xml, text/xml) est servie avec une stratégie de sécurité du contenu de sandboxing. Réponse réelle pour une fonction renvoyant text/html:

en-têtes de réponsetext
content-type: text/html
content-security-policy: default-src 'none'; frame-ancestors 'none'; sandbox
x-content-type-options: nosniff

Votre HTML est servi, mais sans cookie, stockage ou accès au script à l'origine de votre projet. Utilisez Storage ou votre propre domaine pour héberger une vraie page Web.

Dernière mise à jour · 12 oct. 2026