post 방식의 url 호출

남기현·2022년 1월 25일

post vs get

목록 보기
1/2
post-thumbnail

📌get vs post

get방식 : 데이터를 보내 조회하는 방식
post방식 : 데이트를 가져와 생성 or 수정 하는 방식

좀 더 디테일한 특징들을 설명하자면

get방식
ex) www.exampleurl.com?id=123&pwd=qwer
1) url에 파라미터가 그대로 노출된다.
2) 파라미터 전달시 url 다음 ? 를 통해 파라미터를 전달하며 2개이상의 파라미터 전달시 & 를 통해 구분한다.
3) header 부분에 파라미터를 포함하여 보낸다.

url에 파라미터를 넣어 호출할 수 있지만 파라미터가 그대로 노출되기 때문에 중요정보와 같은 데이터를 포함했을때 호출할 수 없다.

post방식
1) url에 파라미터가 노출되지 않아 get방식 보다 안전하다.
2) json형식으로 파라미터를 바디부분에 포함하여 보낸다.
3) Time Out 요청을 받는 리미트 시간이 있다.

get방식, post방식 모두 chrome 개발자도구나 피들러와 같은 툴에 의해 요청 내용을 모두 확인이 가능하니 안전한 방식을 택하기 위해서는 파라미터에 반드시 암호화 하는 작업이 필요하다.
(파라미터 암호화시 요청 url또한 복호화는 필수!!)

📌코드

post방식의 url 호출을 통해 다른 도메인에서의 jsp접근을 해보았다.
쉽게 설명하자면 A라는 서비스에서 B라는 서비스의 화면을 띄우는 형태였다.
코드는 아래와 같다. (JavaScript / 웹스퀘어5 기준)

//이벤트 클릭을 통한 함수 호출
scwin.statBtn_onclick = function(e) {
	
	//윈도우 사이즈
	var popupWidth = 500;
	var popupHeight = 400;

	//윈도우 오픈 가운데 정렬
	var left = (screen.availWidth - popupWidth) / 2;

	if( window.screenLeft < 0){                            //듀얼모니터 일때
		left += window.screen.width*-1;
	} else if ( window.screenLeft > window.screen.width ){ //단일모니터일때
		left += window.screen.width;
	}

	var top = (screen.availHeight - popupHeight) / 2 -10;

	//윈도우 오픈 옵션
	var options = 'left=' + left + ',top=' + top +', width=' + popupWidth+ ',height=' + popupHeight ;	
	//var options = 'left=' + left + ',top=' + top ;    //팝업 오픈 위치만 지정
  	
  	//윈도우 오픈
  	window.open("", "popup_window", options);
  	
  	//현재 열려있는 url
  	//개발 : https://deve.com/
  	//운영 : https://real.com/
  	var windowUrl = window.location.href;
  	var action = "https://dev.com/exJspFile.do";
 	
  	if(windowUrl.indexOf("real") == -1){
	  	action = "https://real.com/exJspFile.do";
	}
	
  	//post방식 JSON data
  	var parma1 = "123";    //param1
  	var parma2 = "QWER";   //parma2
  	
  	var params = {
		
		parma1  : parma1,      //param1
		parma2  : parma2       //parma2
		
	};
	
    var form = document.createElement('form');        //form엘리먼트 생성
    
    form.setAttribute('method', 'post');              //POST 메서드 적용
    form.setAttribute('action', action);	      //데이터를 전송할 url
    form.setAttribute('target', 'popup_window');      //window.open targetID
    document.charset = "utf-8";                       //인코딩
    
    for ( var key in params) {	// key, value로 이루어진 객체 params
        var hiddenField = document.createElement('input');
        hiddenField.setAttribute('type', 'hidden'); //값 입력
        hiddenField.setAttribute('name', key);
        hiddenField.setAttribute('value', params[key]);
        form.appendChild(hiddenField);
    }
    
    document.body.appendChild(form);
    
    form.submit();	// 전송

};

📌고민했던점

한가지 고려해야했던 부분이 개발서버운영서버가 나누어져 있고 각 서버마다 db가 달라서
현재 열려있는 화면에서 url호출시
개발서버의 도메인과 운영서버의 도메인을 구분지어야 했는데

window.location.href 함수를 통해 현재 열려있는 url을 통해 해결할 수 있었다.

profile
내가 보려고 만든 velog

1개의 댓글

comment-user-thumbnail
2022년 1월 26일

인상적이네요 잘보고갑니다ㅋ

답글 달기