You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

咨询KLEIN中处理浏览器OPTIONS预检请求及CORS头的方法

在Klein中处理CORS预检请求与跨域头

你的思路完全正确——直接给目标路由添加OPTIONS方法支持,返回必要的CORS头即可,逻辑和Twisted Web里的实现一致。

两种实现方式:

1. 单个路由的精细化处理

针对特定接口单独配置OPTIONS响应,适合需要不同跨域规则的场景:

from klein import Klein

app = Klein()

# 业务路由(示例为POST请求)
@app.route('/api/submit', methods=['POST'])
def handle_submit(request):
    # 这里写你的业务逻辑
    return "处理完成"

# 对应接口的预检请求处理
@app.route('/api/submit', methods=['OPTIONS'])
def handle_submit_options(request):
    # 设置跨域头
    request.setHeader('Access-Control-Allow-Origin', 'https://your-frontend-domain.com')
    request.setHeader('Access-Control-Allow-Methods', 'POST, OPTIONS')
    request.setHeader('Access-Control-Allow-Headers', 'Content-Type, X-Custom-Header')
    return ''

2. 全局统一处理

如果所有接口的跨域规则一致,可以用全局匹配的方式一次性处理所有OPTIONS请求:

@app.route('/', methods=['OPTIONS'], branch=True)
def handle_global_options(request):
    request.setHeader('Access-Control-Allow-Origin', 'https://your-frontend-domain.com')
    request.setHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS')
    request.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization')
    return ''

注意事项

  • 生产环境不要直接用*作为Access-Control-Allow-Origin的值,建议指定具体的前端域名,避免安全风险。
  • Access-Control-Allow-Headers要包含前端实际会发送的自定义请求头,否则预检会失败。

内容的提问来源于stack exchange,提问作者John Aherne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 17:03:10