我正在使用Varnish 4.1.2,并尝试包含ESI内容。有时,所包含内容的网址可能包含已编码的HTML实体,例如'
('
)。
例如,我的应用程序为外壳返回的HTML中包含以下内容:
<esi:include src="/esi/map/alice's%20house"/>
esi
map
alice's house
第三段中的撇号是HTML编码的,因为它是在HTML文档中传输的。该空间是URL编码的,因为它是URL的一部分。
然而,在发出ESI请求之前,Varnish似乎没有对HTML编码实体进行解码。它会发送/esi/map/alice's%20house
请求,这是一个错误的请求,因为&
在路径或网址中不合法。
如何让Varnish正确处理这些ESI链接?
答案 0 :(得分:0)
我最后在Varnish Github issue tracker上发布了这个问题,似乎答案是:你做不到。
解决方法是对链接进行URL编码,以避免使用HTML实体。