>백엔드 개발 >Golang >Go 템플릿 실행 후 HTML 주석이 사라지는 이유는 무엇입니까?

Go 템플릿 실행 후 HTML 주석이 사라지는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-01 08:55:02563검색

Why Do My HTML Comments Disappear After Go Template Execution?

Go - 템플릿 실행 후 HTML 주석이 이스케이프되지 않음

Go에서는 템플릿 실행을 통해 HTML 주석을 렌더링하는 것이 종종 예상되지만 업데이트 Go 버전에서는 출력에서 ​​HTML 주석이 예기치 않게 제외될 수 있습니다. 이 글에서는 문제를 살펴보고 template.HTML 유형을 사용하여 솔루션을 제공합니다.

문제 이해

Go의 텍스트/템플릿 패키지를 사용하여 HTML을 렌더링할 때 HTML 주석은 일반적으로 XSS(교차 사이트 스크립팅) 공격을 방지하기 위해 이스케이프됩니다. 그러나 특정 상황에서는 적절한 기능을 위해 이러한 주석을 유지하는 것이 좋습니다.

해결책

해결책은 template.HTML 유형을 사용하여 표시하는 것입니다. HTML 주석은 이스케이프에서 제외됩니다. 구현 방법은 다음과 같습니다.

  1. 사용자 정의 함수 등록:

    문자열을 허용하고 이를 템플릿으로 반환하는 템플릿에 대한 사용자 정의 함수 정의 .HTML. 이 함수는 전달된 문자열의 이스케이프를 방지합니다.

  2. HTML 주석 변환:

    모든 HTML 주석을 사용자 정의 함수, 원래 주석을 인수로 전달합니다.

예:

<code class="go">const src = `<html><body>
{{safe "<!-- This is a comment -->"}}
<div>Some <b>HTML</b> content</div>
</body></html>`</code>

이 템플릿 변환은 렌더링 중에 HTML 주석이 생략되거나 이스케이프되는 것을 방지합니다. .

주의사항

  • HTML 주석 내의 따옴표('"')를 이스케이프 처리하세요.
  • 조건부 HTML 주석을 다음과 같이 사용하지 마세요. html/template의 상황에 맞는 이스케이프를 방해할 수 있습니다. 이 측면에 대한 자세한 내용은 설명서를 참조하세요.

위 내용은 Go 템플릿 실행 후 HTML 주석이 사라지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.