Flask跨域请求解决方案
Flask跨域请求解决方案
这个坑太坑了,记录一下。
我也不知道到底哪行代码起了作用,总之就是起了作用,问题解决了,那就这样吧!
跨域请求跟前端无关,可以通过后端代码更改:
- 首先增加CROS:
copyfrom flask import Flask, jsonify, request, make_response
from flask_cors import CORS
def after_request(resp):
resp.headers['Access-Control-Allow-Origin'] = '*'
return resp
app = Flask(__name__)
app.after_request(after_request)
CORS(app, resources={
r"/api/*": {
"origins": "*", # Vite 默认开发服务器地址
"methods": ["GET", "POST", "PUT", "DELETE", "OPTIONS"],
"allow_headers": ["Content-Type"]
}
})
api = Api(app)
- 然后在接口调用的地方:
copy# 如下:methods方法里加上 'OPTIONS',
@app.route('/api/analyze-analysis', methods=['POST', 'OPTIONS'])
def ai_analysis():
# 再然后加上下面这几行代码
if request.method == 'OPTIONS':
response = make_response()
response.headers['Access-Control-Allow-Origin'] = '*'
response.headers['Access-Control-Allow-Methods'] = 'POST, OPTIONS'
response.headers['Access-Control-Allow-Headers'] = 'Content-Type'
return response
# 下面就是业务逻辑代码了。
try:
data = request.json
code = data.get('code')
prompt = data.get('prompt', '')
model = data.get('model', 'gpt-4')
if not code:
return jsonify({'error': '代码不能为空'}), 400
# Use the AIGrading instance
result = ai_grader.analyze_code(code, prompt, model)
# Convert the result keys to match frontend expectations
return jsonify({
'codeQualityScore': result['code_quality'],
'functionalityScore': result['functionality'],
'creativityScore': result['creativity'],
'documentationScore': result['documentation'],
'feedback': result['feedback']
})
except Exception as e:
print(f"AI analysis failed: {str(e)}")
return jsonify({'error': str(e)}), 500
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步