Flask와 Flask-CORS 구분하기
- 웹/Tip
- 2025. 9. 3.
Flask와 Flask-CORS: 웹 개발의 핵심과 확장 기능, 완벽 이해하기 🧐
웹 개발, 특히 RESTful API를 다루다 보면 Flask와 Flask-CORS라는 용어를 자주 접하게 됩니다. 이름이 비슷해서 혼동하기 쉽지만, 이 둘은 웹 애플리케이션 개발에서 완전히 다른 역할을 수행합니다. 이 글을 통해 Flask가 웹 개발의 '본체'라면, Flask-CORS는 그 기능을 보강하는 '옵션'이라는 점을 명확하게 이해하실 수 있을 겁니다.
Flask: 웹 애플리케이션의 뼈대를 만드는 도구
Flask는 파이썬(Python)으로 웹 애플리케이션을 쉽고 빠르게 만들 수 있도록 돕는 마이크로 웹 프레임워크입니다. 여기서 '마이크로'라는 단어는 Flask가 웹 개발에 꼭 필요한 최소한의 핵심 기능만 제공한다는 것을 의미합니다.
Flask는 웹 개발자가 복잡한 웹 서버 구축부터 URL 라우팅, HTTP 요청/응답 처리, 템플릿 렌더링 등 웹 개발의 기본적인 뼈대를 효율적으로 만들 수 있게 해줍니다. 즉, Flask를 사용하면 몇 줄의 코드만으로도 웹 서버를 띄우고, 특정 URL에 접속했을 때 원하는 동작을 수행하도록 만들 수 있습니다.
예를 들어, Flask는 다음과 같은 기능을 제공합니다:
- 라우팅(Routing): 사용자가 특정 URL(예:
/about이나/contact)로 접속했을 때 어떤 함수를 실행할지 정의합니다. - 요청 처리: GET, POST 등 HTTP 메서드를 통해 들어오는 사용자 요청 데이터를 처리합니다.
- 응답 생성: HTML 페이지, JSON 데이터 등 사용자에게 보낼 응답을 생성합니다.
Flask는 가볍고 유연해서, 작은 규모의 개인 프로젝트나 프로토타입 개발부터 복잡한 웹 서비스의 API 서버 구축에 이르기까지 폭넓게 사용됩니다.

Flask-CORS: 웹 보안 정책을 유연하게 만드는 확장 기능
그렇다면 Flask-CORS는 무엇일까요? 이는 Flask 애플리케이션에 CORS(Cross-Origin Resource Sharing) 기능을 추가해주는 확장 기능(Extension)입니다.
웹 브라우저에는 '동일 출처 정책(Same-Origin Policy)'이라는 중요한 보안 규칙이 있습니다. 이 정책은 웹 사이트의 보안을 위해 다른 '출처(origin)'의 리소스에 접근하는 것을 기본적으로 차단합니다. 여기서 출처는 프로토콜(http/https), 도메인(example.com), 포트(80/443)가 모두 동일한 경우를 말합니다.
예를 들어, https://www.my-frontend.com에서 호스팅되는 웹 애플리케이션이 https://api.my-backend.com에 있는 API를 호출하려고 할 때, 이 두 출처는 다르기 때문에 브라우저는 보안 상의 이유로 요청을 차단하게 됩니다.
이러한 문제를 해결하기 위해 CORS가 등장했습니다. CORS는 서버가 특정 출처의 요청을 명시적으로 허용하도록 설정하는 메커니즘입니다. 그리고 Flask-CORS는 이 CORS 기능을 Flask 애플리케이션에 매우 간단하게 적용할 수 있도록 도와줍니다.
왜 둘 다 필요한가요? 프론트엔드와 백엔드의 조합
최근의 웹 개발은 프론트엔드와 백엔드가 분리되어 개발되는 경우가 많습니다.
- 프론트엔드: React, Vue, Angular 등으로 개발하며, 사용자와 상호작용하는 화면을 담당합니다.
- 백엔드: Flask, Django, Node.js 등으로 개발하며, 데이터 처리와 비즈니스 로직을 담당하는 API 서버를 구축합니다.
이때, 프론트엔드와 백엔드는 서로 다른 서버(다른 출처)에 배포될 가능성이 높습니다. 따라서 프론트엔드에서 백엔드 API를 호출하려면 CORS 문제를 해결해야만 합니다. 바로 이럴 때 Flask로 구축된 API 서버에 Flask-CORS를 설치하고 설정하여, 프론트엔드로부터의 요청을 안전하게 허용하도록 만들어야 합니다.
결론적으로, Flask는 웹 서버의 뼈대이고, Flask-CORS는 그 뼈대에 다른 출처로부터의 요청을 허용하는 '통행증'을 부여하는 확장 기능이라고 할 수 있습니다. 둘은 독립된 도구이지만, 현대 웹 개발 환경에서는 서로의 기능을 보완하며 필수적으로 함께 사용되는 경우가 많습니다.
'웹 > Tip' 카테고리의 다른 글
| 인터넷에 있는 표 그대로 가져오기 (0) | 2023.06.08 |
|---|---|
| 내 컴퓨터에 저장되어 있는 이미지 파일 URL 만들기(imgbb) (0) | 2023.05.20 |
| Github 블로그에 이미지 넣기 (0) | 2022.07.12 |
| 구글 계정 전화번호 변경하는 방법 (0) | 2022.06.02 |
| Github 블로그 첫 글쓰기(chirpy) (0) | 2022.04.23 |