为瓶子中的单个 API 设置 CORS 标头的正确方法是什么?



关于如何设置 CORS 标头以允许瓶中所有请求的来源,有大量信息,主要是使用 Hooks 插件和使用"请求后"。(https://bottlepy.org/docs/dev/recipes.html(

但是,我有 10 个路由,我只想在其中一条上启用 CORS 请求。有没有办法用钩子插件做到这一点?

如果没有,我应该为特定路由实现 OPTIONS 方法吗?

如果它只是一个路由,为什么不将 CORS 标头应用于该路由? 您还可以使用装饰器类将标头添加到所需的任何路由。

您应该像下面这样创建常规路由来拦截对方法 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)

相关内容

最新更新