Ошибка при получении http-запроса от flutter-web к серверу fastapi

У меня есть метод, который вызывает метод get

Future<Case> getCaseDetails(int caseId) async {
  final sharedPreferences = await SharedPreferences.getInstance();
  String baseUrl = sharedPreferences.getString("baseUrl");
  final response = await http.get(
      "$baseUrl" + "/case/" + caseId.toString() + '/details',
      headers: {"Accept": "application/json"});
  return Case.fromMap(json.decode(response.body));
}

и это реализовано как таковое

FutureBuilder<Case>(
    future: getCaseDetails(1),
    builder: (context, snapshot) {
        if (snapshot.hasData) {
            return Card(
                child: Text(snapshot.data.query),);
        } else if (snapshot.hasError) {
            return Text(snapshot.error.toString());
        }
        return CircularProgressIndicator();
    }
)

Ошибка просто отображается как XMLHttpRequest error без описания. Я вижу, что запрос обрабатывается на стороне сервера, и я также добавил CORSMiddleware на сервер, как упоминалось в соответствующих сообщениях, но это не решило проблему.

В чем здесь может быть проблема и как ее решить?


person Suyog Singh    schedule 13.10.2020    source источник
comment
Вы пытались вызвать API другим методом? Браузером, через PostMan?   -  person camillo777    schedule 13.10.2020
comment
да, API отлично работает в браузере с swagger ui   -  person Suyog Singh    schedule 13.10.2020
comment
Отвечает ли это на ваш вопрос? "XMLHttpRequest не может загрузить" Ошибка по HTTP-запросам от клиента Dart к локальному док-серверу Dart   -  person Christopher Moore    schedule 17.10.2020


Ответы (1)


Публикация моего собственного ответа. Это была ошибка CORS, так как я не разрешил происхождение клиента. Установка allow_origins=[*] устранила проблему.

from fastapi.middleware.cors import CORSMiddleware


app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)
person Suyog Singh    schedule 14.10.2020