'script'요소 아래에 일부 JS 코드뿐만 아니라 페이지에 삽입해야하는 HTML 스 니펫을 반환하는 AJAX 호출이 있습니다.jQuery를 사용하는 AJAX를 통한 JS 코드 -이 메서드는 안전한가요?
응답에 html/body/head 요소가 없으며 주입해야하는 HTML 만 있습니다. 그래서 응답이있을 수 :
AJAX를 통해 인출 된 나의 이해, JS 코드에서<div>lorem ipsum</div>
<script>alert(1);</script>
는 평가를()를 사용하여 중 하나에 의해 또는 요소, 예를 작성하여 페이지에 추가 할 필요가 :
var script = document.createElement('script');
script.type = 'text/javascript';
script.text = response;
var head = document.getElementsByTagName("head")[0];
head.appendChild(script);
하지만 jQuery에서 .html()을 사용하여 응답을 포함 시키려고 시도했습니다. 놀랍게도 JS 코드와 HTML 부분이 모두 예상대로 처리되었고 HTML 부분이 다음과 같이 추가되었습니다. 페이지 및 JS 코드가 정상적으로 실행되었습니다.
$.ajax({
url: url,
success: function(data) {
$('#foo').html(data);
// #foo now contains '<div>lorem ipsum</div>' and the JS alert was fired
}
});
이 안전한 방법입니다 :
이 내가 해봤 무엇인가? 모든 브라우저에서 작동합니까?
만약 제가 시도하고있는 것을 성취하는 가장 좋은 방법이 있다면 (아마도 응답을 구문 분석하여 나머지로부터 <script>
요소를 분리해야 할 것입니다)?
미리 감사드립니다.
동의합니다. 사용자가 프로그래밍 방식으로 코드에 영향을 미치지 않도록하고 싶습니다. 예를 들어, 와이어를 통해받은 코드를 평가하는 대신 사용자가 얻은 응답을 기반으로 미리 작성된 함수를 콜백으로 호출하는 것이 좋습니다.또한 좀 더 가볍고 JSON으로 컨텐츠를 수신 한 다음 AJAX를 통해 전체 HTML 컨텐츠를 보내는 대신 삽입 용 HTML 스 니펫을 작성할 수 있습니다. –