2016-08-07 3 views
0

나는 Varnish 4.1.2를 사용 중이며 ESI 콘텐츠를 포함하려고합니다. 경우에 따라 포함 된 콘텐츠의 URL에 ' (')과 같은 인코딩 된 HTML 엔터티가 포함될 수 있습니다.Varnish가있는 인코딩 된 HTML 엔터티가 포함 된 ESI URL을 어떻게 참조 할 수 있습니까?

예를 들어, 나는 외부 쉘 내 응용 프로그램에 의해 반환 된 HTML에 다음과 같은 한 :

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

3 개 세그먼트 경로없이 쿼리 문자열에 대한 ESI의 요청이 해야 결과, 완전히 디코딩 할 때, 결과있는 :

  • esi
  • map
  • alice's house

세 번째 세그먼트의 아포스트로피는 HTML 문서에서 전송되므로 HTML로 인코딩됩니다. 이 공간은 URL의 일부이므로 URL로 인코딩됩니다.

그러나 Varnish는 ESI 요청을하기 전에 HTML 인코딩 된 엔터티를 디코딩하지 않는 것 같습니다. 경로 또는 URL에서 &이 유효하지 않으므로 잘못된 요청 인 /esi/map/alice&#x27;s%20house에 대한 요청을 보냅니다.

어떻게 이러한 ESI 링크를 올바르게 처리 할 수 ​​있습니까?

답변

0

나는 바니쉬 Github issue tracker에이 질문을 게시하고 대답은 다음과 같다 : 할 수 없다.

HTML 엔티티를 사용할 필요가 없도록 링크를 URL 인코딩하는 것이 대안입니다.