[typescript] REST API 호출 시 크로스 도메인 이슈 해결 방법

웹 애플리케이션에서 REST API를 호출할 때, 경우에 따라 크로스 도메인 이슈(cross-domain issue)가 발생할 수 있습니다. 예를 들어, 웹 애플리케이션의 호스트된 도메인과 REST API의 호스트된 도메인이 다를 경우 크로스 도메인 이슈가 발생할 수 있습니다. 이 문제를 해결하기 위해 TypeScript에서는 다양한 방법을 제공합니다.

크로스 도메인 이슈란 무엇인가요?

크로스 도메인 이슈란 특정 도메인에서 호스트된 웹 페이지가 다른 도메인에 있는 서버로 요청을 보내는 것을 말합니다. 이는 보안 상의 이유로 브라우저에서 일반적으로 차단됩니다.

크로스 도메인 이슈는 웹 개발자들에게 REST API 호출에 문제를 일으킬 수 있으므로, 웹 애플리케이션에서 데이터를 안전하게 전송하는 방법이 필요합니다.

TypeScript에서 크로스 도메인 이슈 해결 방법

TypeScript를 사용하여 REST API 호출 시 크로스 도메인 이슈를 해결하는 방법은 여러 가지가 있지만, 그중에서 가장 널리 사용되는 방법은 CORS (Cross-Origin Resource Sharing)JSONP (JSON with Padding)를 이용하는 것입니다.

CORS를 이용한 크로스 도메인 이슈 해결

CORS는 브라우저에서 제공하는 방식으로, 서버에서 특정 도메인에서의 리소스 요청을 허용하는 기능입니다. TypeScript에서는 fetch API나 XMLHttpRequest를 사용하여 CORS를 활용할 수 있습니다.

예를 들어, fetch API를 사용하여 REST API를 호출할 때, 다음과 같이 CORS를 해결할 수 있습니다.

fetch('https://api.example.com/data', {
  method: 'GET',
  mode: 'cors',
  headers: {
    'Content-Type': 'application/json'
  }
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));

JSONP를 이용한 크로스 도메인 이슈 해결

JSONP는 서버에서 JSON 데이터를 다른 도메인에서 안전하게 요청할 수 있도록 하는 방법입니다. TypeScript에서는 다음과 같이 JSONP를 이용하여 크로스 도메인 이슈를 해결할 수 있습니다.

function requestJSONP(url: string, callback: Function) {
  const script = document.createElement('script');
  script.src = url + '&callback=' + callback;
  document.body.appendChild(script);
}

function handleData(data) {
  console.log('Received data:', data);
}

// JSONP 요청
requestJSONP('https://api.example.com/data?param1=value1&param2=value2', 'handleData');

마무리

TypeScript를 사용하여 REST API 호출 시의 크로스 도메인 이슈를 해결하는 방법에 대해 알아보았습니다. 이러한 방법을 적절히 활용하여 안전하고 효율적으로 웹 애플리케이션에서 REST API를 활용할 수 있습니다.