【发布时间】:2022-01-09 12:12:44
【问题描述】:
设置:在 Java 8/AWS Linux 1 上运行的 Lambda,对运行在 Windows 2019 数据中心、应用程序服务器 tomcat 上的 IIS 10 进行 HTTPS 调用。
当用户将配置文件放入 S3 存储桶时,我使用 lambda 函数向我的网站发送 HTTP POST /files,以告知文件上传及其内容。
POST 以通常大小为 500KB 的大主体响应 lambda。我总是看到Content-Length: 0 的响应标头有问题。
如果我通过邮递员发出请求,我会得到响应,并且 Content-Length: 0。经过一番摸索,我发现 IIS 10(我的 Web 服务器)没有提供 Transfer-Encoding: chunked,所以我的lambda 认为没有响应,因此关闭连接。
在比较 Postman 和 Lambda 之间的标头后,我发现 lambda 调用中缺少“Accept Encoding: gzip”。所以,我也删除了 Postman 中的标题,我看到了 0 内容长度的行为。
在我的 IIS 中,我启用了静态和动态压缩。那么,为什么 IIS 不会自动默认为非压缩/身份模式?我在配置中缺少什么?
【问题讨论】:
-
IIS 没有问题。事实证明,在 tomcat 上运行的应用程序(Lucee)存在错误。如果
Content-Encoding没有通过,应用程序将无法理解它应该使用什么编码,更糟糕的是它会默默地失败。该错误现已修复,整个流程按预期工作。
标签: java amazon-web-services iis aws-lambda