光环标志
光环基地文档
文档›Edge Functions›Text, binary and HTML responses

返回文本、二进制和 HTML

如何从函数发送文本、图像、文件或 HTML,并使用 SDK 或纯 HTTP 读回它们。

6分钟 读取·级别 中间·修改于 2026年10月12日
该英文文本是根据法文原文自动生成的,尚未经过审查。
该页面已自动翻译。英文版具有权威性。
#
决定

1. 选择响应类型

你的函数返回使用 responseTypedata 是
JSON'json'(默认)解析后的值
纯文本、CSV、HTML'text' (或 'json',也返回字符串)一个 string
图像、PDF、任何字节'blob' 或 'arrayBuffer'Blob 或 ArrayBuffer

默认的'json'模式可以携带JSON和文本。 不能 携带字节:如果函数以二进制内容类型应答,SDK 将返回错误 invalid_response 并告诉您选择 'blob' 或 'arrayBuffer',因此不会丢失任何内容。

#
软件开发工具包

2.用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' } })
  }
  // 8字节PNG签名,足以显示字节往返
  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,姓名\n1,艾达\n”

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

在实际运行返回字节 137,80,78,71,13,10,26,10,255,0,1的函数时, arrayBuffer 准确返回这 11 个字节,而 blob 返回 type=image/png size=11。

使用 'text'、 'blob' 或 'arrayBuffer',SDK 会跳过 JSON 信封并按原样返回函数主体。如果您的函数返回错误状态,则 error.status 是该状态,而 error.message 是您的函数返回的文本。

#
HTTP协议

3. HTTP 上的原始模式

添加标头 X-Aurabase-Invoke-Mode: raw,平台将返回函数自己的响应:其状态、content-type 和字节。

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

如果没有该标头,响应始终是带信封的 200:

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

在信封中,body 是已解析的 JSON,当响应文本是 UTF-8 而不是 JSON 时,它是响应的文本;当正文为空或二进制时,null 是响应文本。

在原始模式下,函数的每个响应都带有 x-aurabase-invoke-origin: function。没有它的响应来自网关或运行时。这就是 SDK 告诉您的代码从平台中断返回的 503 的方式。

#
标头

4. 哪些标头能够存活

在原始模式下,您的响应标头会被过滤,因为它们是从平台自己的源提供的。

标头结果
content-type保留。如果未设置,则默认为 application/octet-stream。
自定义标头(x-custom-out、 cache-control、...)保留。
set-cookie已删除。函数无法设置 cookie。
access-control-*已删除。 CORS 由网关决定。
x-aura-*, x-internal-token已删除。
content-security-policy、 strict-transport-security、 x-content-type-options由平台设置,无论您发送什么。
content-length、 transfer-encoding、 connection重新计算。

可以运行脚本(text/html、 application/xhtml+xml、 image/svg+xml、 application/xml、 text/xml)的响应采用沙盒内容安全策略。返回 text/html的函数的真实响应:

响应头text
content-type: text/html
content-security-policy: default-src 'none'; frame-ancestors 'none'; sandbox
x-content-type-options: nosniff

您的 HTML 已被提供,但没有 cookie、存储或脚本访问您的项目的来源。使用存储或您自己的域来托管真实的网页。

最后更新· 2026年10月12日