> 웹 프론트엔드 > JS 튜토리얼 > JavaScript에서 Flask Jinja 템플릿의 JSON 데이터를 안전하게 사용하는 방법은 무엇입니까?

JavaScript에서 Flask Jinja 템플릿의 JSON 데이터를 안전하게 사용하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-13 06:10:11
원래의
909명이 탐색했습니다.

How to Safely Use JSON Data from Flask's Jinja Templates in JavaScript?

JavaScript로 Jinja 템플릿에서 렌더링된 JSON 데이터를 사용하는 방법

Flask에서는 경로의 데이터를 Jinja 템플릿으로 전달할 때 자동으로 보안 취약점을 방지하기 위해 이스케이프가 활성화되어 있습니다. 그러나 이로 인해 JavaScript에서 데이터를 JSON으로 사용하려고 하면 문제가 발생할 수 있습니다.

SyntaxError: Unexpected Token '&'

렌더링된 데이터를 다음과 함께 사용하려고 할 때 JSON.parse, Jinja가 JSON.parse에서 "&" 문자를 이스케이프하기 때문에 "SyntaxError: Unexpected token '&'" 오류가 발생합니다.

tojson 필터 사용

이 문제를 해결하기 위해 Flask는 데이터를 JSON으로 안전하게 덤프하고 렌더링하기에 안전한 것으로 표시하는 tojson 필터를 제공합니다.

return render_template('tree.html', tree=tree)
로그인 후 복사
로그인 후 복사
<script>var tree = {{ tree|tojson }};</script>
로그인 후 복사

이전 플라스크 동작 및 안전 필터

이전 버전의 Flask에서는 덤프된 데이터를 안전한 것으로 표시하지 않았기 때문에 다음과 같은 접근 방식을 사용했습니다.

<script>var tree = {{ tree|tojson|safe }};</script>
로그인 후 복사

그러나 더 이상 필요하지 않습니다.

JSON을 사용하지 않는 대체 접근 방식

데이터를 JavaScript로 전달하지 않고 Jinja에서 사용하면 json을 호출하지 않고도 원본 Python 데이터를 전달할 수 있습니다.

return render_template('tree.html', tree=tree)
로그인 후 복사
로그인 후 복사
{% for item in tree %}
    <li>{{ item }}</li>
{% endfor %}
로그인 후 복사

기타 옵션

  • 안전 필터: 데이터를 렌더링하지 않고도 안전한 것으로 표시합니다.
  • 마크업 래퍼: 마크업에 문자열을 래핑하여 안전 필터와 동일한 효과를 얻습니다.

위 내용은 JavaScript에서 Flask Jinja 템플릿의 JSON 데이터를 안전하게 사용하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿