티스토리 뷰

반응형

[JAVASCRIPT] 자바스크립트 AJAX 외부 통신 크로스 도메인 해결 - CORS(Cross Origin Resource Sharing)

---------------------------------------- transport.jsp -----------------------------------------

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@page import="java.io., java.net."%>

<%

// 요청 인코딩 변경
// request.setCharacterEncoding("utf-8");

try {

    String paramUrl = request.getParameter("url");        

    // URL infoURL = new URL(paramUrl);
    URL infoURL = new URL("www.naver.com");
    InputStream inputStream = infoURL.openStream();
    InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");

    StringBuffer sb = new StringBuffer();
    int readByte;
    while ((readByte = inputStreamReader.read()) != -1) {
        sb.append((char) readByte);
    }
    inputStreamReader.close();
    inputStream.close();
    out.clearBuffer();

     // 응답 ContentType 세팅
    // response.setContentType("text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8; charset=utf-8");
    out.print(sb.toString());
} catch (Exception e) {
    e.printStackTrace();
}

%>
---------------------------------------- ajax호출 하여 transport.jsp 사용 ---------------------------

$.ajax({
type: "post",
url: ../transport.jsp?url=www.naver.com",
dataType: "text",
success: function(data) {
console.log(data)
}
});


---------------------------------------- transport.java -----------------------------------------

@RequestMapping("/")
@Controller
public class MainController {
@RequestMapping(value="/transport.json", method=RequestMethod.POST)
@ResponseBody
public String transport(HttpServletRequest request, HttpServletResponse response){

    String paramUrl = request.getParameter("url");
    String data = "";

    try {
        URL infoURL = new URL(paramUrl);
        InputStream inputStream = infoURL.openStream();
        InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");

        StringBuffer sb = new StringBuffer();
        int readByte;
        while ((readByte = inputStreamReader.read()) != -1) {
            sb.append((char) readByte);
        }
        inputStreamReader.close();
        inputStream.close();

        data = sb.toString();

    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }

    return data;

}

}
---------------------------------------- ajax호출 하여 transport.jsp 사용 ---------------------------

$.ajax({
type: "post",
url: ../transport.do?url=www.naver.com",
dataType: "text",
success: function(data) {
console.log(data)
}
});


끗!@#!@#!@#

반응형