개발 잡동사니

Ajax Cross Domain 관련

lazy_web_devloper 2023. 5. 10. 08:29
728x90
반응형

시스템 유지보수 중 보안관련 사항으로 일부 프로그램 솔루션 업데이트가 필요하여

token을 적용하면서 알게된 재밋는 사실을 기록하려고 한다.

 

솔루션의 주소가 현재 돌아가고 있는 로컬의 주소와 다른곳에 있으므로 

ajax 호출 시 cross domain 문제가 발생하였다.

 

-------호출관련 ajax

$.ajax({
        method: "POST",
        url: _url,
        crossDomain: true,
        dataType: "jsonp",
        jsonpCallback: "--------------",
        data: _params,
        async : true,
        success : function(resdata) {
            
            if(resdata && resdata.RESULT)
            {  
                if(resdata.RESULT=="SUCCESS"){

                      ------------token리턴 되는 부분--------------
                }
            }
        }
  });

 

그래서 애러를 확인하던 도중 

크롬 콘솔 창을 보니 분명 POST로 보냈는데 망할.. GET으로 가는것이다..

 

그래서 이리저리 알아봐도 모르겠어서 chatGpt에게나 물어보자 싶어서 물어봤다

일단 먼저

JSONP이 뭔가에 대해 물어보았고 

 

 

 

JSONP는 Script 태그를 이용하여 cross-domain 요청을 보내는 방법입니다. 서버 측에서는 요청에 대한 응답을 JavaScript 함수 호출로 감싸서 보내면, 클라이언트 측에서는 해당 함수를 호출하여 응답을 받을 수 있습니다.

 

그래서 그럼 POST 호출인데 왜 GET인지에 대해 물어보았다

 

JSONP는 JavaScript를 이용하여 데이터를 주고받는 방식으로, 일반적으로 GET 요청을 사용합니다. 따라서, Ajax에서 POST 요청을 보내고 JSONP를 사용하면 GET 요청으로 변환되어 보내지게 됩니다.

이는 JSONP의 구현 방식과 관련이 있습니다. JSONP는 Script 태그를 이용하여 서버로부터 응답을 받습니다. Script 태그는 GET 방식으로만 요청할 수 있기 때문에, JSONP를 사용하는 경우에도 GET 요청을 보내게 됩니다.

따라서, POST 요청을 보내고 싶은 경우에는 JSONP 대신 CORS나 프록시 서버를 사용하는 것이 더 적합할 수 있습니다. CORS를 사용하면 서버 측에서 허용하는 도메인에서만 POST 요청을 보낼 수 있으며, 프록시 서버를 사용하면 POST 요청을 보내고, 프록시 서버가 해당 요청을 서버로 전달할 수 있습니다.

 

 

이와 같은 답변에 편안함을 느꼈다 ㅋㅋㅋㅋㅋㅋ

 

혹시나 나와 같은 문제를 찾고 있는 사람이 있다면 참고하길 바란다.

 

728x90
반응형