Вы должны создать общий маршрут, как показано ниже, чтобы перехватывать любой запрос метода 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)