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

使用Dart向Flask后端发送POST请求时仅返回OPTIONS 200问题

问题解决:Flutter发送POST请求仅触发Flask的OPTIONS请求

核心原因

浏览器(或Flutter Web环境下的HTTP客户端)会发送OPTIONS预飞行请求验证跨域权限,你的Flask后端未配置CORS(跨域资源共享)支持,导致预请求通过后,实际POST请求未被正确处理。而curl直接发送POST,不会触发预请求,因此能正常工作。

解决方案

1. 给Flask添加CORS支持

首先安装flask-cors包:

pip install flask-cors

然后在Flask应用中配置CORS,有两种方式:

  • 全局配置(开发环境推荐):允许所有域名的跨域请求
from flask import Flask
from flask_cors import CORS
from flask_restful import Api, Resource

app = Flask(__name__)
CORS(app)  # 全局开启CORS
api = Api(app)

# 你的RegisterResource类及其他代码保持不变
  • 针对单个路由配置:仅允许特定域名或路由的跨域请求
from flask_cors import cross_origin
from flask_restful import Resource

class RegisterResource(Resource):
    @cross_origin()  # 给POST方法添加CORS支持
    def post(self):
        # 原POST方法代码不变
        arguments = reqparse.RequestParser()
        arguments.add_argument('email', type=str, required=True, help="Email is required")
        arguments.add_argument('password', type=str, required=True, help="Password is required")
        user_data = arguments.parse_args()

        if User.find_user(user_data['email']):
            return {"error": "User already exists"}, 409

        user = User(**user_data)
        user.save_user()
        return {"message": "User created successfully"}, 201

2. Flutter端调试优化

在createUser方法中添加日志,方便排查后续问题:

import 'dart:convert';
import 'package:http/http.dart' as http;

void createUser({required String email, required String password}) async{
    final Map<String, String> headers = {'Content-Type': 'application/json'};

    Map<String, String> data = {
      "email": email,
      "password": password,
    };

    try {
      final response = await http.post(Uri.parse("http://localhost:5000/register"), headers: headers, body: json.encode(data));
      // 添加日志打印
      print('请求状态码: ${response.statusCode}');
      print('响应内容: ${response.body}');
    } on Exception catch (e) {
      print('请求异常: $e');
      rethrow;
    }
}

配置完成后重启Flask服务,再调用Flutter的createUser方法,即可触发预期的POST请求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 22:52:42