如何在Azure Logic App中保留响应Gzip压缩并避免406错误
Logic App HTTP操作保留Gzip压缩响应的解决办法
问题根源
当勾选HTTP操作的「禁用自动解压缩」选项时,Logic App会自动移除请求中的Accept-Encoding头,但目标API要求必须携带该头才会返回有效响应;而如果不勾选该选项,Logic App会自动解压响应体,无法保留原始Gzip格式。
可行解决方案
1. 改用「HTTP with Azure AD」操作
原生HTTP操作存在自动移除Accept-Encoding头的限制,但「HTTP with Azure AD」操作没有这个问题:
- 在工作流中添加「HTTP with Azure AD」操作
- 配置目标API的请求URL、请求方法等基础参数
- 在请求头中手动添加
Accept-Encoding: gzip - 勾选操作设置里的「禁用自动解压缩」选项
- 执行后,该操作的输出响应体将保持原始Gzip压缩状态,可直接用于后续存储或处理步骤
2. 创建自定义连接器
如果必须使用原生HTTP操作,可通过自定义连接器绕过限制:
- 在Azure门户中创建自定义连接器,配置目标API的请求规则
- 在连接器的请求头配置中固定添加
Accept-Encoding: gzip - 在连接器的操作设置里启用「禁用自动解压缩」
- 在Logic App中调用该自定义连接器,此时既能满足API的头要求,又能获取未解压的Gzip响应体
3. 代码动作二次压缩(备选方案)
若上述方案无法实施,可通过代码动作间接实现:
- 不勾选HTTP操作的「禁用自动解压缩」,让Logic App自动解压响应体
- 添加「Azure Functions」或「Inline Code」动作,将解压后的响应体重新压缩为Gzip格式
- 注意:此方法会额外占用计算资源,仅作为最后备选
验证方式
执行工作流后,检查操作输出:
- 确认响应头包含
Content-Encoding: gzip - 将响应体保存为
.gz文件,尝试解压验证内容完整性
内容的提问来源于stack exchange,提问作者tengl
相关产品推荐
相关产品推荐

