Flask跨域请求解决方案

Flask跨域请求解决方案

这个坑太坑了,记录一下。

我也不知道到底哪行代码起了作用,总之就是起了作用,问题解决了,那就这样吧!

跨域请求跟前端无关,可以通过后端代码更改:

  1. 首先增加CROS:
copy
from 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)
  1. 然后在接口调用的地方:
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
posted @   梁君牧  阅读(8)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
🚀