我有带有Http触发器的nodejs azure函数。我正在使用POST方法并将body发送到azure函数。由于身体很大,所以使用gzip进行压缩。
我在azure函数中收到请求,内容编码标题是' gzip'。我试图使用nodejs
zlib.gunzip(req.body,...)
并且它引发了错误
错误:标题检查不正确
答案 0 :(得分:4)
对于JavaScript函数,streaming is not supported和函数运行时提供请求主体而不是请求对象。 C#函数没有特殊处理,因此您可以尝试使用C#函数。
这是一个C#函数,它解压缩gzip请求体以供您参考。
using System.Net;
using System.IO.Compression;
public static async Task<HttpResponseMessage> Run(HttpRequestMessage req, TraceWriter log)
{
var inputStream = await req.Content.ReadAsStreamAsync();
string decompressedReqBody = string.Empty;
using (GZipStream decompressionStream = new GZipStream(inputStream, CompressionMode.Decompress))
{
using (StreamReader sr = new StreamReader(decompressionStream))
{
decompressedReqBody = sr.ReadToEnd();
log.Info(decompressedReqBody);
}
}
return req.CreateResponse(HttpStatusCode.OK, decompressedReqBody);
}
答案 1 :(得分:-1)
最近遇到类似问题。我们犯的错误是设置错误的Content-Type
标头。将Content-Type
从application/octet-stream
更改为application/json
就可以了。