자바스크립트에서 CORS를 이용하여 다른 도메인의 웹페이지를 가져오는 방법에 대해 알아보세요.

웹 개발에서 다른 도메인의 웹페이지에 접근하고 데이터를 가져오는 것은 보안 상의 이유로 기본적으로 허용되지 않습니다. 이러한 제한을 우회하기 위해 Cross-Origin Resource Sharing (CORS)를 사용할 수 있습니다. CORS를 통해 허용된 도메인에서만 데이터를 가져올 수 있도록 서버 측에서 특정 헤더를 설정할 수 있습니다.

CORS 동작 원리

CORS는 브라우저와 서버 간의 통신에서 이루어집니다. 웹 페이지에서 자바스크립트를 사용하여 다른 도메인의 데이터를 요청할 때, 브라우저는 서버에 사전 요청을 보내고 서버는 응답 헤더에 허용된 도메인을 지정합니다. 그 후에 브라우저에서 실제 요청을 보내고 서버는 해당 요청을 처리합니다.

CORS 설정

서버 측에서 CORS를 사용하려면 응답에 특정 헤더를 추가해야 합니다. 아래는 예시 코드입니다.

// Express.js를 사용하는 예시
const express = require('express');
const app = express();

app.use(function(req, res, next) {
  res.setHeader('Access-Control-Allow-Origin', 'https://allowed-domain.com');
  res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS');
  res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
  next();
});

// 원하는 라우트에서 데이터를 가져오는 예시
app.get('/data', function(req, res) {
  // 데이터 처리 로직
  // ...
  res.json(data);
});

app.listen(3000, function() {
  console.log('Server listening on port 3000');
});

위의 예시에서는 Express.js를 사용하여 서버를 구성하였습니다. res.setHeader() 함수를 통해 Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers 헤더를 설정하고 허용된 도메인, 허용된 HTTP 메소드, 요청에 포함될 수 있는 헤더를 지정합니다. 요청을 처리하는 라우터에서 필요한 데이터를 처리한 후 res.json()을 사용하여 데이터를 반환합니다.

요청하기

CORS를 이용하여 다른 도메인의 데이터를 가져오기 위해서는 클라이언트 측에서도 몇 가지 설정을 해야 합니다. 아래는 웹 페이지에서 자바스크립트를 사용하여 CORS 요청을 보내는 예시 코드입니다.

fetch('https://api.example.com/data')
  .then(response => response.json())
  .then(data => {
    // 데이터 처리 로직
    // ...
  })
  .catch(error => {
    console.error('Error:', error);
  });

위의 예시에서는 fetch() 함수를 사용하여 다른 도메인의 /data 경로에 GET 요청을 보냅니다. 응답으로 받은 데이터를 처리하는 로직을 작성할 수 있으며, 에러가 발생한 경우 콘솔에 에러 메시지를 출력합니다.

요약

CORS를 사용하면 자바스크립트를 사용하여 다른 도메인의 웹페이지에서 데이터를 가져올 수 있습니다. 서버 측에서 특정 헤더를 설정하고 클라이언트 측에서는 fetch() 함수를 사용하여 요청을 보낼 수 있습니다. 이를 통해 웹 개발에서 다른 도메인 간의 데이터 공유를 가능하게 할 수 있습니다.

해시태그

#CORS #JavaScript