【问题标题】:IIS responds with Content Length 0 if Accept Encoding header is NOT passed如果未通过 Accept Encoding 标头,则 IIS 以 Content Length 0 响应
【发布时间】: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


【解决方案1】:

我已启用静态和动态压缩

它不是静态和动态压缩,你应该检查的是静态内容。

Internet 信息服务 > WWW 服务 > 通用 HTTP 功能 > 静态内容。

【讨论】:

  • 已安装。但没有变化。
  • 您的问题很难重现,建议您通过support.microsoft.com开一个案例。
猜你喜欢
  • 2020-07-15
  • 1970-01-01
  • 2011-02-16
  • 2016-11-05
  • 1970-01-01
  • 2020-02-11
  • 2014-10-19
  • 2011-09-06
  • 1970-01-01
相关资源
最近更新 更多