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 설정 옵션을 제공합니다. 몇 가지 대표적인 설정 옵션을 살펴보겠습니다.
-
CORS_ALLOW_METHODS
: 허용할 HTTP 메서드를 설정합니다. 기본값은 모든 메서드를 허용하는'*'
입니다. -
CORS_ALLOW_HEADERS
: 허용할 요청 헤더를 설정합니다. 기본값은 모든 헤더를 허용하는'*'
입니다. -
CORS_EXPOSE_HEADERS
: 브라우저에게 노출할 응답 헤더를 설정합니다. -
CORS_MAX_AGE
: 사전 요청(Preflight Request)의 최대 유효 기간을 설정합니다.
이 외에도 더 많은 설정 옵션을 확인하려면 tornado-cors
패키지의 공식 문서를 참고하세요.
결론
이 문서에서는 Tornado에서의 CORS 처리를 위해 tornado-cors
패키지를 사용하는 방법을 알아보았습니다. CORS 설정을 통해 다른 도메인에서 리소스에 접근하는 웹 애플리케이션을 개발할 때 유용하게 활용할 수 있습니다.