Возвращаемый текст, двоичный файл и HTML
Как отправлять текст, изображения, файлы или HTML из функции и читать их обратно с помощью SDK или простого HTTP.
1. Выберите тип ответа
| Ваша функция возвращает | Используйте responseType | data — это |
|---|---|---|
| JSON | 'json' (по умолчанию) | проанализированное значение |
| Обычный текст, CSV, HTML | 'text' (или 'json', который также возвращает строку) | string |
| Изображение, PDF, любые байты | 'blob' или 'arrayBuffer' | Blob или ArrayBuffer |
Режим 'json' по умолчанию может передавать JSON и текст. Он не может переносить байты: если функция отвечает с двоичным типом содержимого, SDK возвращает ошибку invalid_response и предлагает вам выбрать 'blob' или 'arrayBuffer', поэтому ничего не теряется молча.
2. Прочтите его с помощью SDK.
При реальном запуске функции, возвращающей байты 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 — это текст, возвращенный вашей функцией.
3. Режим Raw через HTTP
Добавьте заголовок X-Aurabase-Invoke-Mode: raw, и платформа вернет собственный ответ вашей функции: ее статус, content-type и байты.
Без этого заголовка ответ всегда будет 200 с конвертом:
В конверте 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:
Ваш HTML-код обслуживается, но без доступа к файлам cookie, хранилищу или сценарию к источнику вашего проекта. Используйте хранилище или собственный домен для размещения настоящей веб-страницы.