[파이썬] Tornado에서의 CORS 처리

CORS (Cross-Origin Resource Sharing)는 웹 브라우저에서 동일 출처 정책(Same-Origin Policy)를 우회하여 다른 도메인에서 리소스에 접근할 수 있도록 허용하는 메커니즘입니다. 이 기능은 Tornado 웹 프레임워크에서도 쉽게 처리할 수 있습니다.

CORS 처리를 위한 패키지 설치

먼저 Tornado에서 CORS 처리를 위해 tornado-cors 패키지를 설치해야 합니다. 다음 명령을 실행하여 설치할 수 있습니다.

pip install tornado-cors

Tornado 앱에 CORS 설정 추가

Tornado 앱에서 CORS 처리를 위해서는 tornado-cors 패키지에서 제공하는 CorsMixin 클래스를 사용해야 합니다. 다음 예제 코드를 참고하여 Tornado 앱에 CORS 설정을 추가할 수 있습니다.

import tornado.web
from tornado_cors import CorsMixin

class MyHandler(CorsMixin, tornado.web.RequestHandler):
    CORS_ORIGIN = '*'  # 허용할 도메인 설정
    
    def get(self):
        self.write("Hello, World!")

app = tornado.web.Application([
    (r'/', MyHandler),
])

if __name__ == '__main__':
    port = 8888
    app.listen(port)
    print('Listening on http://localhost:{}'.format(port))
    tornado.ioloop.IOLoop.current().start()

위의 예제 코드에서 CorsMixin 클래스를 상속하는 핸들러 클래스인 MyHandler를 정의했습니다. CORS_ORIGIN 변수에 허용할 도메인을 설정하면 해당 도메인에서 오는 요청에 대해 CORS 처리가 적용됩니다.

CORS 설정 옵션

tornado-cors 패키지에서는 다양한 CORS 설정 옵션을 제공합니다. 몇 가지 대표적인 설정 옵션을 살펴보겠습니다.

  1. CORS_ALLOW_METHODS : 허용할 HTTP 메서드를 설정합니다. 기본값은 모든 메서드를 허용하는 '*'입니다.

  2. CORS_ALLOW_HEADERS : 허용할 요청 헤더를 설정합니다. 기본값은 모든 헤더를 허용하는 '*'입니다.

  3. CORS_EXPOSE_HEADERS : 브라우저에게 노출할 응답 헤더를 설정합니다.

  4. CORS_MAX_AGE : 사전 요청(Preflight Request)의 최대 유효 기간을 설정합니다.

이 외에도 더 많은 설정 옵션을 확인하려면 tornado-cors 패키지의 공식 문서를 참고하세요.

결론

이 문서에서는 Tornado에서의 CORS 처리를 위해 tornado-cors 패키지를 사용하는 방법을 알아보았습니다. CORS 설정을 통해 다른 도메인에서 리소스에 접근하는 웹 애플리케이션을 개발할 때 유용하게 활용할 수 있습니다.