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
但我不希望这就是你正在寻找的对于.
我已经将我的 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
但我不希望这就是你正在寻找的对于.