본문 바로가기
Programming/Python

[Python] flask cors 설치 및 적용 예시

by JeeU147 2024. 4. 30.
반응형

안녕하세요.

 

오늘은 flask cors 설치 및 적용에 대해 알아보려고 합니다.

 

CORS 란?

 

CORS는 "Cross Origin Resource Sharing"의 약자인데 해석하면 서로 다른 도메인간에 자원을 공유하는 것을 의미하며 기본적으로 브라우저에서 허용하지 않은 도메인에 대한 자원 공유가 보안상의 이유로 스크립트에서 시작된 교차 출처 HTTP 요청을 제한합니다.
API를 사용하는 웹 애플리케이션은 다른 출처의 응답에 올바른 CORS 헤더가 포함되지 않는 한 애플리케이션이 로드된 동일한 출처에서만 리소스를 요청할 수 있습니다.

 

1. flask-cors 를 설치
pip install flask-cors

 

 

2. flask-cors를 import하여 적용

 

CORS를 아래처럼 적용을 하면 어떤 호출이던 허용 및 응답을 해주게 되는걸로 설정이 됩니다.

 

CORS(app, resources={
  r"/api/*": {"origin": "*"},
})

 

이런 식으로 작성을 해두시면 어떠한 도메인들만 허용하겠다 라는 조건이 걸리게 됩니다!

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app, resources={
  r"/api/*": {"origin": "*"},
})

@app.route('/')
def hello():
	return 'Hello, JeeU World!'

@app.route('/api/users')
def apiUsers():
    return {"members": [{ "id" : 1, "name" : "jeeu" },
    					{ "id" : 2, "name" : "jeeu2" }]}

@app.route('/users')
def users():
    return {"members": [{ "id" : 3, "name" : "jeeu3" },
    					{ "id" : 4, "name" : "jeeu4" }]}

 

3. 실제 적용 사례

실제로 ~/api/* 에 해당하는 것만 CORS를 적용해줬기 때문에 /api/users 는 정상적으로 호출이 되고 있고 /users는 CORS에 의하여 호출되지 않고 있는 것을 확인할 수 있습니다!

CORS 여부 파악

 

// 프론트 소스

async function users() {
  await fetch(`http://192.168.35.99:8001/users`).then(
    // response 객체의 json() 이용하여 json 데이터를 객체로 변화
    res => res.json()
  ).then(
    // 데이터를 콘솔에 출력
    data => console.log(data)
  )
}

async function apiUsers() {
  await fetch(`http://192.168.35.99:8001/api/users`).then(
    // response 객체의 json() 이용하여 json 데이터를 객체로 변화
    res => res.json()
  ).then(
    // 데이터를 콘솔에 출력
    data => console.log(data, "여기는 CORS API 적용")
  )
}

 

이렇게 하면 flask-cors를 정상적으로 설치 및 적용을 하실 수 있습니다.

 

감사합니다.

반응형

댓글