Xaip
@Xaip

Почему tornado блокирует заголовки?

Нужно в headers прокинуть Authorization с определенным ключем. Если задавать заголовки напрямую через методы options и set_default_headers то все ок. Но в коде более 100 хендлеров и на каждый вешать свой options не комильфо.
Вот так работает
class LongPollingHandler(tornado.web.RequestHandler):

    def set_default_headers(self):
        self.set_header("Access-Control-Allow-Origin", "*")

    def options(self, *args, **kwargs):
        self.set_header("Access-Control-Allow-Headers", "*")
        self.set_header('Access-Control-Allow-Methods', '*')


    async def get(self):
        pass


Но не работает если наследоваться через класс Mixin:
class BaseHandler(tornado.web.RequestHandler):

    def set_default_headers(self):
        self.set_header("Access-Control-Allow-Origin", "*")


    def options(self, *args, **kwargs):
        self.set_header("Access-Control-Allow-Headers", "*")
        self.set_header('Access-Control-Allow-Methods', '*')

    def prepare(self):
        if db.is_closed():
            db.connect()
        return super(BaseHandler, self).prepare()

    def on_finish(self):
        if not db.is_closed():
            db.close()
        return super(BaseHandler, self).on_finish()

class LongPollingHandler(BaseHandler):
    pass

Почему?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
class BaseHandler(tornado.web.RequestHandler):
    def set_default_headers(self):
        self.set_header('Access-Control-Allow-Origin', '*')

    def options(self, *args, **kwargs):
        self.set_header('Access-Control-Allow-Headers', '*')
        self.set_header('Access-Control-Allow-Methods', '*')
        self.set_status(204)
        self.finish()


class LongPollingHandler(BaseHandler):
    def get(self, status):
        self.write('{"data": "Hello"}')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Хантфлоу Москва
от 160 000 до 200 000 руб.
Хантфлоу Москва
от 120 000 до 150 000 руб.
Betting Software Томск
от 55 000 до 140 000 руб.
16 июн. 2019, в 19:42
500 руб./за проект
16 июн. 2019, в 18:38
5000 руб./за проект
16 июн. 2019, в 17:14
5000 руб./за проект