url 的 AWS Load Balancer 健康检查失败,#

AWS Load Balancer health check fails for url with #

我已经将我的 EC2 负载均衡器运行状况检查设置为指向 url,其中包含 #,例如 /#/applications

当我 ssh 进入盒子并 curl url 时,我得到一个响应代码 200。

但是负载均衡器给出了这个错误:

Health checks failed with these codes: [400]

如果我将健康检查 URL 更改为 /,那么负载均衡器会说没问题。

我怀疑这可能是 url 编码问题。 URL 中允许使用的字符是否有任何限制?

# 不是请求 URI 中的有效字符。 # 符号标记 URL 片段的开始。

当您使用 # 访问 URL 时,URI 在发送到服务器之前会在 # 处被浏览器截断。服务器永远看不到这个 -- 它仅供客户端使用。

因此在健康检查中无效,服务器拒绝它是正确的400 Bad Request。使用来自浏览器的片段访问您站点上的 URL,您会注意到 # 未被 Web 服务器记录,因为浏览器未发送它。

如果出于某种原因你实际上需要一个 url 编码的 #,那将被写成 %23 但我不希望这就是你正在寻找的对于.