본문 바로가기

Local Oriented/jQuery

jsonp 로 외부 HTML 을 가져올 수 있네요..

XSS 공격을 피해서.. 외부 웹사이트에서 HTML 을 jsonp 로 가져올 수가 있네요..


외부 URL 의 HTML 을 호출하는 쪽

<script>

  function goPage(cp){

    $.ajax({

      type:'GET',                     // 생략 가능. $.getJSON() 과 달리 POST 방식 가능하나, POST 는 내부 call 만 된다..?

      url : 'URL',

      dataType : 'jsonp',        // json 이라고 하면 도메인 안에서만 데이타 주고 받음

      jsonp : 'callback',

      data : 'page='+cp,            // 페이지 네비게이션 상의 페이지, json 방식으로 세팅해도 됨. data:{a:b, c:d, ...}

      success : function(data){

        $('#id').html(data.page);    // #id 는 html 가 넣어지는 곳, data.page 는 외부 URL 에 세팅한 key

      },

      error : function(data){

      }

    });

  }

</script>


외부 URL. get 방식이다 보니, 4 kb 제한이 있어요.

<%@ page import="net.sf.json.JSONObject"

%><%

    HashMap<String, Object> hm = new HashMap<String, Object>();

    hm.put("page", "HTML내용");  // HTML내용은, 여기서 조립되는 것

    out.print(request.getParameter("callback")+"("+JSONObject.fromObject(hm)+")");

%>


HashMap 은 try ~ finally 문을 통해 clear() 해 주는 것이 JVM GC 효율을 높입니다.