0

Varnish 4.1.2 を使用しており、ESI コンテンツを含めようとしています。'含まれるコンテンツの URL に、 ( )などのエンコードされた HTML エンティティが含まれる場合があります'

たとえば、外部シェル用にアプリから返された HTML には次のものがあります。

<esi:include src="/esi/map/alice&#x27;s%20house"/>

これにより、3 つのセグメント持ち、クエリ文字列を持たないパスの ESI リクエストが生成されます。これを完全にデコードすると、次のようになります。

  • esi
  • map
  • alice's house

3 番目のセグメントのアポストロフィは、HTML ドキュメントで送信されるため、HTML エンコードされます。スペースは URL の一部であるため、URL エンコードされます。

ただし、Varnish は、ESI 要求を行う前に HTML エンコードされたエンティティをデコードしないようです。に対してリクエストを送信しますが、パスまたは URL で が正当でない/esi/map/alice&#x27;s%20houseため、これは不適切なリクエストです。&

Varnish でこれらの ESI リンクを適切に処理するにはどうすればよいですか?

4

1 に答える 1

0

この質問を Varnish Github issue trackerに投稿することになりましたが、答えは「できない」のようです。

回避策は、リンクを URL エンコードして、HTML エンティティを使用する必要をなくすことです。

于 2016-08-11T18:44:41.170 に答える