我正在使用 Varnish 4.1.2,并尝试包含 ESI 内容。有时,所包含内容的 URL 可能包含编码的 HTML 实体,例如'
( '
)。
例如,我的应用程序为外壳返回的 HTML 中有以下内容:
<esi:include src="/esi/map/alice's%20house"/>
这应该会导致 ESI 请求具有 3 个段且没有查询字符串的路径,当完全解码时,会导致:
esi
map
alice's house
第三段中的撇号是 HTML 编码的,因为它是在 HTML 文档中传输的。该空间是 URL 编码的,因为它是 URL 的一部分。
然而,在发出 ESI 请求之前,Varnish 似乎没有解码 HTML 编码的实体。它发送一个请求/esi/map/alice's%20house
,这是一个错误的请求,因为&
在路径或 URL 中是不合法的。
如何让 Varnish 正确处理这些 ESI 链接?