REST API 호출시 CORS를 우회하는 방법

이기원·2021년 5월 27일
0

Web 공부

목록 보기
4/5

웹 개발을 하다보면 다른 기업에서 공개한 API라던지, 공용 API를 호출하게 되는 경우가 있다. ( 지도를 불러와야 해서 구글 API로 위치정보를 불러온다던지, 기타 다른 Data를 호출하는경우) 하지만 많은 경우 에서 이러한 API를 호출시 CORS(Cross-origin resource sharing) 라는 정책에 막힐때가 많은데, 이러한 난감한 경우를 해결하는 2가지 방법을 간단하게 적어놓고자 한다. ( 차후 추가 될 수 있음)

  1. Chrome Plugin 설치 및 사용

Chrome Web Store에서 'Allow'라는 키워드로 검색을 하면 CORS를 우회하는 Plugin이 나오는데 간단히 설치해서 실행하기만 하면 CORS에 걸리지 않고, API를 호출 할 수 있다.

대략 이런느낌의 Plugin인데, 가장 간단한 방법이지만 어디까지나 개발자 편의에 의한 테스트용도로 밖에 쓸 수 없고, 오로지 Chrome에서만 통하는 방법이다.. (본인의 웹 프로젝트를 배포해놓고, 사용자들이 이러한 Plugin을 일일히 깔아야된다고 하면 그걸 쓸사람이 있을까..?)

2.Server-Side에서의 처리
본인이 가장 자주 사용하는 방법인데, 별다른 코드나 조치없이 Server-Side에서는 apache http 모듈을 사용하면, API를 간단하게 호출 할수 있다! (사실 jsonp라는 방법으로 Script 호출을 이용하려고 했지만 잘되지 않았다..) 이 방법을 사용한 예시는 아래와 같다.

HttpClient httpClient = new DefaultHttpClient(); 
	String Api_Key = "?api_key=RGAPI-342e80f0-0143-4ad8-9d5d-bd6a5a8f656c"; --API 호출 공개키
	
	public String getBody(String url,String param) {
		
		try {
		HttpGet getRequest = new HttpGet(url+param+Api_Key); -- Get Request 작성
		HttpResponse response = httpClient.execute(getRequest); -- Request 전송
			if(response.getStatusLine().getStatusCode() == 200) { -- 전송 후 응답 상태 확인
				ResponseHandler<String> handler = new BasicResponseHandler();
				String body = handler.handleResponse(response); -- 응답 핸들링
				return body;
			}
		}
		catch(Exception e) {
			System.out.println(e.toString());
			return "fail";
		}
		return "fail";
				
	}

다만 이 방법을 사용하면 간혹 호출 url이 바뀐다던지, 공개키 변경등의 대응에 대해 소스코드를 빌드 후 server를 통째로 재 시작해야하는 불편함이 있어, 가급적 하고싶지는 않은 방법이었다..

기타 다른 방법을 찾게 되면 계속 수정됩니다.

profile
초급 / 전산 / MES

0개의 댓글