Go에서는 템플릿 실행을 통해 HTML 주석을 렌더링하는 것이 종종 예상되지만 업데이트 Go 버전에서는 출력에서 HTML 주석이 예기치 않게 제외될 수 있습니다. 이 글에서는 문제를 살펴보고 template.HTML 유형을 사용하여 솔루션을 제공합니다.
Go의 텍스트/템플릿 패키지를 사용하여 HTML을 렌더링할 때 HTML 주석은 일반적으로 XSS(교차 사이트 스크립팅) 공격을 방지하기 위해 이스케이프됩니다. 그러나 특정 상황에서는 적절한 기능을 위해 이러한 주석을 유지하는 것이 좋습니다.
해결책은 template.HTML 유형을 사용하여 표시하는 것입니다. HTML 주석은 이스케이프에서 제외됩니다. 구현 방법은 다음과 같습니다.
사용자 정의 함수 등록:
문자열을 허용하고 이를 템플릿으로 반환하는 템플릿에 대한 사용자 정의 함수 정의 .HTML. 이 함수는 전달된 문자열의 이스케이프를 방지합니다.
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 주석이 생략되거나 이스케이프되는 것을 방지합니다. .
위 내용은 Go 템플릿 실행 후 HTML 주석이 사라지는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!