Как правильно установить заголовки CORS для одного API в бутылке - PullRequest
0 голосов
/ 03 октября 2018

Существует масса информации о том, как установить заголовки CORS, чтобы разрешить отправку по всем запросам в бутылке, в первую очередь с помощью плагина Hooks и с использованием 'after-request'.(https://bottlepy.org/docs/dev/recipes.html)

Однако у меня есть 10 маршрутов, и я хочу включить запросы CORS только для одного из них. Есть ли способ сделать это с помощью плагина hooks?

Если нетя должен реализовать метод OPTIONS для определенного маршрута?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Вы должны создать общий маршрут, как показано ниже, чтобы перехватывать любой запрос метода OPTIONS, а затем добавить ловушку для применения заголовков CORS ко всем запросам:

import bottle

# This route capture all route for method OPTIONS
@bottle.route('/<:re:.*>', method='OPTIONS')
def cors():
    pass

headers = ['Origin', 'Accept', 'Content-Type',
           'X-Requested-With', 'X-CSRF-Token',
           'Authorization']
HEADERS = ', '.join((headers + [h.lower() for h in headers]))

# For all request I add cors headers
def apply_cors():
    response.headers['Access-Control-Allow-Origin'] = '*'
    response.headers['Access-Control-Allow-Methods'] = 'GET, POST, DELETE, PUT, OPTIONS'
    response.headers['Access-Control-Allow-Headers'] = HEADERS

app = bottle.default_app()
app.add_hook('after_request', apply_cors)
0 голосов
/ 10 октября 2018

Если это только один маршрут, почему бы просто не применить заголовок CORS к этому одному маршруту?Вы также можете использовать класс декоратора, чтобы добавить заголовок к любым маршрутам, которые вы хотите.

...