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

使用flask-cors时OPTIONS请求未返回Access-Control-Allow-Headers与Access-Control-Max-Age响应头问题求助

解决Flask-CORS中OPTIONS请求缺少Access-Control-Allow-Headers和Access-Control-Max-Age响应头的问题

我来帮你排查这个问题,从你的代码和配置来看,主要有几个可能的原因和对应的解决方法:

1. 修正max_age的参数类型

你当前配置里的max_age用了字符串"3600",但Flask-CORS要求这个参数是整数类型。字符串值会导致框架无法正确解析,从而不会返回Access-Control-Max-Age响应头。

2. 确保资源路径匹配正确

虽然你的路由/app/compute看起来和resources={r"/app/*"}匹配,但可以确认一下请求的实际路径是否完全符合(比如有没有额外的斜杠或大小写问题)。如果不确定,可以先尝试全局配置来排除路径匹配的问题。

3. 升级Flask-CORS版本

你使用的Flask-Cors==3.0.10是比较旧的版本,可能存在一些已知的配置解析bug。升级到最新稳定版(比如4.0.0)可能会解决这类兼容性问题。

修改后的代码示例

from flask import Flask, Response, request
import json
from flask_cors import CORS
from waitress import serve

app = Flask(__name__)
# 修正max_age为整数,同时确保配置参数正确
CORS(app, resources={r"/app/*": {
    "origins": "http://localhost:3000",
    "allow_headers": ["Origin", "Authorization", "X-Frame-Options", "X-Requested-With", "DNT", "User-Agent", "If-Modified-Since", "Cache-Control", "Range", "X-Real-IP", "HOST", "X-NginX-Proxy", "Content-Type", "If-Match"],
    "expose_headers": ["ETag", "Content-Length", "Content-Range", "Access-Control-Allow-Origin"],
    "max_age": 3600,  # 改为整数
    "supports_credentials": True  # 可选,若前端需要携带cookie等凭证则开启
}})

@app.route('/app/compute', methods=['GET', 'POST', 'PUT'])
def compute():
    input = request.json
    responsedict = dict()
    responsedict['customerid'] = 'customer A'
    responsedict['loan_amount'] = 0
    return Response(json.dumps(responsedict), status=200, mimetype="application/json")

serve(app, port=5000, host="0.0.0.0")

升级依赖的requirements.txt

Flask==2.0.2
Flask-Cors==4.0.0  # 升级到最新稳定版
waitress==2.1.1

验证方法

用curl发送OPTIONS请求来测试响应头:

curl -X OPTIONS http://localhost:5000/app/compute \
-H "Origin: http://localhost:3000" \
-H "Access-Control-Request-Headers: Authorization, Content-Type" \
-v

查看响应头中是否包含Access-Control-Allow-Headers和Access-Control-Max-Age,如果出现就说明配置生效了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 19:07:32