대답이 어떻게 렌더링되는지에 대한 질문이 있습니다. 많은 HTML 코드가 미리보기에서 작동하지만 최종 답글이 표시되지 않는 것으로 나타났습니다. 왜 이런 것들이 차단 되었습니까?

대답이 어떻게 렌더링되는지에 대한 질문이 있습니다. 많은 HTML 코드가 미리보기에서 작동하지만 최종 답글이 표시되지 않는 것으로 나타났습니다. 왜 이런 것들이 차단 되었습니까?
Anonim

짧은 대답은 두 개의 다른 Markdown 라이브러리를 사용하여 미리보기와 최종 답변을 렌더링하는 것입니다. 이 두 라이브러리는 HTML을 다르게 처리합니다.

우리의 답변은 "Markdown"이라는 마크 업 언어를 사용하여 스타일을 지정하고 형식을 지정합니다. Markdown은 미리 정의 된 마크 업을 링크, 이미지, 헤더, 기울임 체, 강조 등의 HTML로 변환합니다.

너무 기술적이지 못해도 Javascript 라이브러리를 사용하여 브라우저에서 답변 미리보기가 만들어집니다. 속도면에서 이점이 있습니다.

페이지를 새로 고침하면 대답은 이미 Python Markdown 라이브러리를 사용하여 HTML로 변환됩니다. 페이지에 접속하자마자 답을 찾기를 원하기 때문에이 작업을 수행합니다. 원시 응답을 단순히 출력 한 다음 Javascript 라이브러리를 사용하여 변환하기로 결정했다면 먼저 "추한"원시 응답을 확인한 다음 멋지게 형식화 된 버전으로 건너 뜁니다. 그렇게 나쁘지는 않지만 문제는 Google 사이트 및 기타 Google 검색 사이트를 크롤링하는 봇이 자바 스크립트를 실행하지 않는다는 것입니다. 그 봇은 항상 우리의 검색 순위를 해칠 수있는 날카 롭고 추한 대답을 볼 것입니다.

이제 왜이 두 라이브러리가 HTML 코드를 다르게 취급합니까? 최종 답변을 담당하는 Python 라이브러리는 HTML을 "이스케이프"합니다. 즉, HTML 코드를 가져 와서 무해한 텍스트로 변경합니다. 무해하다고 말하면 사용자가 페이지에 HTML을 입력하도록 허용하면 페이지의 레이아웃이 완전히 파괴 될 수 있습니다. 미리보기를 담당하는 Javascript 라이브러리는 기술적으로 버그 인 HTML을 이스케이프 처리하지 않습니다.

앞으로 보안상의 이유로 HTML 코드를 미리보기 위해 Javascript 라이브러리의 기능을 제거해야 할 것입니다. 또한 단일 라이브러리를 사용하여 Markdown 텍스트를 모두 렌더링합니다.