웹 애플리케이션에서는 보안 상의 이유로 동일 출처 정책(Same-Origin Policy)에 의해 자바스크립트에서 다른 도메인의 파일을 다운로드할 수 없습니다. 하지만, Cross-Origin Resource Sharing (CORS)를 사용하면 이 제약을 우회할 수 있습니다. 이 글에서는 CORS를 활용하여 자바스크립트에서 다른 도메인의 파일을 다운로드하는 방법에 대해 알아보겠습니다.
CORS란?
CORS는 웹 브라우저에서 동일 출처 정책을 우회하여 자원에 접근할 수 있도록 하는 메커니즘입니다. 서버는 응답 헤더의 Access-Control-Allow-Origin
헤더를 설정하여 특정 도메인이 자원에 접근할 수 있는지 허용합니다.
자바스크립트에서 다른 도메인의 파일 다운로드하기
자바스크립트에서 다른 도메인의 파일을 다운로드하기 위해서는 서버에서 CORS 설정을 해주어야 합니다. 서버에서는 응답 헤더에 Access-Control-Allow-Origin
헤더를 포함하여 특정 도메인의 요청을 허용해야 합니다.
아래는 서버에서 CORS 설정을 하는 예시입니다. 이 예시는 파일 다운로드를 허용하는 모든 도메인에 대해서 CORS를 허용합니다.
// Node.js 예시
const http = require('http');
const server = http.createServer((req, res) => {
// CORS 설정
res.setHeader('Access-Control-Allow-Origin', '*');
// 파일 다운로드 처리
// ...
});
server.listen(3000, () => {
console.log('Server is running on port 3000');
});
서버에서 CORS 설정을 하였다면, 자바스크립트에서는 XMLHttpRequest
객체나 fetch
API를 사용하여 다른 도메인의 파일을 다운로드할 수 있습니다.
아래는 자바스크립트에서 fetch
API를 사용하여 다른 도메인의 파일을 다운로드하는 예시입니다.
fetch('https://example.com/files/example.pdf')
.then(response => {
if (response.ok) {
return response.blob();
} else {
throw new Error('파일을 다운로드할 수 없습니다.');
}
})
.then(blob => {
// 다운로드된 파일 처리
// ...
})
.catch(error => {
console.error(error);
});
위 예시에서 주의할 점은, 서버에서 Access-Control-Allow-Origin
헤더를 설정한 도메인에서만 파일을 다운로드할 수 있다는 것입니다. 다른 도메인에서 파일을 다운로드하려면 서버에서 해당 도메인을 허용하도록 CORS 설정을 변경해야 합니다.
결론
CORS를 사용하여 자바스크립트에서 다른 도메인의 파일을 다운로드할 수 있습니다. 서버에서 Access-Control-Allow-Origin
헤더를 설정하여 특정 도메인의 요청을 허용하도록 CORS 설정을 변경하고, 자바스크립트에서 fetch
API를 사용하여 파일을 다운로드할 수 있습니다. 중요한 점은 보안을 유지하기 위해 필요한 CORS 설정만을 허용하는 것입니다.
#CORS #파일다운로드