[파이썬] 웹 애플리케이션의 보안 자원 공유(CORS) 설정

웹 애플리케이션을 개발하다 보면 보안 자원 공유(Cross-Origin Resource Sharing, CORS) 설정이 필요한 경우가 있습니다. CORS는 다른 도메인 간의 자원 공유를 안전하게 허용하기 위한 메커니즘입니다. 이는 브라우저의 보안 정책으로 인해 도메인 간 리소스 공유에 제약이 있는 웹 애플리케이션에서 자주 사용됩니다.

CORS 설정 방법

백엔드 (Python) 측에서 설정

Python으로 개발된 백엔드에서는 CORS 설정을 간단하게 할 수 있습니다. 아래의 예제 코드를 참고해주세요.

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)

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

if __name__ == '__main__':
    app.run()

위의 코드에서는 Flask 프레임워크와 flask_cors 라이브러리를 사용하여 CORS 설정을 할 수 있습니다. CORS(app) 코드는 모든 도메인으로부터의 요청을 허용하는 기본 설정을 적용합니다. 필요한 경우 CORS 함수에 매개변수를 추가하여 세밀한 설정을 할 수 있습니다.

프론트엔드에서 설정

만약 백엔드에서 CORS 설정을 할 수 없거나, 브라우저의 동일 출처 정책(Same-Origin Policy) 제한으로 인해 추가적인 프론트엔드에서의 설정이 필요한 경우, JavaScript를 사용하여 CORS 요청을 보낼 수 있습니다. 아래의 예제 코드를 참고해주세요.

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

위의 코드에서는 fetch 함수를 사용하여 GET 메서드로 다른 도메인의 데이터에 접근할 수 있도록 CORS 설정을 적용하였습니다. Access-Control-Allow-Origin 헤더에 *을 설정함으로써 모든 도메인에서의 요청을 허용합니다.

결론

웹 애플리케이션 개발 시 도메인 간의 자원 공유를 안전하게 하기 위해 CORS 설정을 해야할 때가 있습니다. 백엔드에서는 프레임워크나 라이브러리를 사용하여 간단하게 설정할 수 있고, 필요한 경우 프론트엔드에서 JavaScript를 사용하여 추가적인 설정을 할 수 있습니다. CORS 설정을 통해 웹 애플리케이션의 보안을 강화하고 다른 도메인과의 자원 공유를 원활하게 할 수 있습니다.