Logotipo de Aurabase
aurabasedocumentos
documentos›Edge Functions›Text, binary and HTML responses

Devolver texto, binario y HTML

Cómo enviar texto, imágenes, archivos o HTML desde una función y leerlos con el SDK o HTTP simple.

6 min leer·Nivel intermedio·Revisado el 12 oct 2026
Este texto en inglés se generó automáticamente a partir del original en francés y aún no ha sido revisado.
Esta página fue traducida automáticamente. La versión en inglés es autorizada.
#
decisión

1. Elija un tipo de respuesta

Tu función regresaUtilice responseTypedata es
JSON'json' (predeterminado)el valor analizado
Texto sin formato, CSV, HTML'text' (o 'json', que también devuelve la cadena)un string
Una imagen, un PDF, cualquier byte'blob' o 'arrayBuffer'un Blob o un ArrayBuffer

El modo predeterminado 'json' puede transportar JSON y texto. no puede transportar bytes: si una función responde con un tipo de contenido binario, el SDK devuelve el error invalid_response y le indica que elija 'blob' o 'arrayBuffer', para que no se pierda nada silenciosamente.

#
SDK

2. Léelo con el 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 firma PNG de 8 bytes, suficiente para mostrar bytes de ida y vuelta
  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) // "id,nombre\n1,Ada\n"

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

En una ejecución real con una función que devuelve los bytes 137,80,78,71,13,10,26,10,255,0,1, arrayBuffer devolvió exactamente esos 11 bytes y blob devolvió type=image/png size=11.

Con 'text', 'blob' o 'arrayBuffer', el SDK omite el sobre JSON y devuelve el cuerpo de su función tal como está. Si su función responde con un estado de error, error.status es ese estado y error.message es el texto que devolvió su función.

#
HTTP

3. Modo sin formato a través de HTTP

Agregue el encabezado X-Aurabase-Invoke-Mode: raw y la plataforma devuelve la propia respuesta de su función: su estado, content-type y bytes.

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

Sin ese encabezado, la respuesta siempre es 200 con un sobre:

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

En el sobre, body es el JSON analizado, el texto de su respuesta cuando es UTF-8 y no JSON, o null cuando el cuerpo está vacío o es binario.

En modo sin formato, cada respuesta de su función lleva x-aurabase-invoke-origin: function. Una respuesta sin ella proviene de la puerta de enlace o del tiempo de ejecución. Así es como el SDK le indica a un 503 devuelto por su código una interrupción de la plataforma.

#
Encabezados

4. ¿Qué encabezados sobreviven?

En modo sin formato, los encabezados de respuesta se filtran porque se sirven desde el propio origen de la plataforma.

encabezadoResultado
content-typeMantenido. El valor predeterminado es application/octet-stream si no configura ninguno.
Encabezados personalizados (x-custom-out, cache-control,…)Mantenido.
set-cookieEliminado. Una función no puede configurar cookies.
access-control-*Eliminado. CORS lo decide la puerta de enlace.
x-aura-*, x-internal-tokenEliminado.
content-security-policy, strict-transport-security, x-content-type-optionsLo establece la plataforma, envíes lo que envíes.
content-length, transfer-encoding, connectionRecalculado.

Una respuesta que puede ejecutar scripts (text/html, application/xhtml+xml, image/svg+xml, application/xml, text/xml) se entrega con una política de seguridad de contenido de espacio aislado. Respuesta real para una función que devuelve text/html:

encabezados de respuestatext
content-type: text/html
content-security-policy: default-src 'none'; frame-ancestors 'none'; sandbox
x-content-type-options: nosniff

Se sirve su HTML, pero sin acceso a cookies, almacenamiento o secuencias de comandos al origen de su proyecto. Utilice Storage o su propio dominio para alojar una página web real.

Última actualización · 12 oct 2026