[typescript] 타입스크립트에서 JSONP를 사용하여 CORS 에러를 우회하는 방법

웹 개발자들은 타입스크립트를 사용하여 웹 애플리케이션을 개발할 때 CORS(Cross-Origin Resource Sharing) 에러를 마주칠 수 있습니다. 일반적으로, 웹 브라우저는 보안상의 이유로 다른 출처의 리소스에 대한 HTTP 요청을 제한합니다. 이로 인해, 브라우저에서는 동일 출처 정책(Same-Origin Policy)을 갖고 있어서 스크립트나 스타일 같은 리소스들은 동일한 출처에 있어야 합니다.

그러나, JSONP(JSON with Padding)를 이용하면 이를 우회할 수 있습니다. JSONP는 스크립트로 리소스를 불러오는 방법으로, 서버에서 JSON 데이터를 콜백 함수와 함께 응답하여 클라이언트 측에서 이를 처리할 수 있도록 합니다.

JSONP를 사용하는 방법

다음은 타입스크립트에서 JSONP를 사용하여 CORS 에러를 우회하는 간단한 예제입니다.

// JSONP 요청 함수 정의
function jsonp(url: string, callback: (data: any) => void) {
  const callbackName = `jsonp_callback_${Date.now()}`;
  window[callbackName] = (data: any) => {
    delete window[callbackName];
    document.body.removeChild(script);
    callback(data);
  };
  const script = document.createElement('script');
  script.src = `${url}&callback=${callbackName}`;
  document.body.appendChild(script);
}

// JSONP 요청 보내기
const apiURL = 'https://api.external.com/data?param=value';
jsonp(apiURL, (data) => {
  // JSONP로 받은 데이터를 처리
  console.log(data);
});

이 예제에서는 jsonp라는 함수를 사용하여 JSONP 요청을 보내고, 응답된 데이터를 처리하는 방법을 보여줍니다.

주의사항

JSONP를 사용하여 CORS 에러를 우회하는 방법은 보안상의 이슈가 있을 수 있으므로 주의해야 합니다. JSONP를 사용할 때는 신뢰할 수 있는 출처에서만 데이터를 가져오도록 하는 것이 중요합니다.

또한, 최근에는 CORS 정책을 우회하기 위해 JSONP 대신 CORS 헤더를 설정하는 방법을 권장합니다. 그러나, 일부 이전 버전의 브라우저에서는 JSONP를 계속 사용해야 할 수도 있으므로 상황에 맞게 선택하여 사용해야 합니다.

이제, JSONP를 사용하여 타입스크립트에서 CORS 에러를 우회하는 방법에 대해 간단히 알아보았습니다. 상황에 맞게 적절한 방법을 선택하여 사용하시기 바랍니다.

참고 자료