提问者:小点点

如何删除Flutter中的“XMLHttpRequest错误”?(Django后端,Flutter前端)


我无法将我的Django后端连接到Web上的Flutter前端。我还没有在Android或iOS上测试过。

我希望能够进行API调用并让它返回一个可以转换为json的响应。然而,无论我尝试过什么,它都会抛出错误。我尝试过将其转换为https请求,但没有成功。

如果有人需要Django方面的任何东西,请告诉我

这是错误的样子:

Error: XMLHttpRequest error.
dart-sdk/lib/_internal/js_dev_runtime/patch/core_patch.dart 909:28                get current

packages/http/src/browser_client.dart 71:22                                       <fn>

dart-sdk/lib/async/zone. dart 1613:54 runUnary dart-sdk/lib/async/future_impl.dart 155:18 handleValue dart-sdk/lib/async/future_impl.dart 707:44 handleValueCallback dart-sdk/lib/async/future_impl.dart 736:13_propagateToListenersdart-sdk/lib/async/future_impl.dart 533:7[_complete]dart-sdk/lib/async/stream_pipe.dart 61:11_cancelAndValuedart-sdk/lib/async/stream.dart 1219:7 dart-sdk/lib/_internal/js_dev_runtime/私有/ddc_runtime/操作.dart 324:14_checkAndCalldart-sdk/lib/_internal/js_dev_runtime/私有/ddc_runtime/操作.dart 329:39 dcall dart-sdk/lib/html/dart2js/html_dart2js.dart 37307:

at Object.createErrorWithStack (http://localhost:63593/dart_sdk.js:5362:12)
at Object._rethrow (http://localhost:63593/dart_sdk.js:39509:16)
at async._AsyncCallbackEntry.new.callback (http://localhost:63593/dart_sdk.js:39503:13)
at Object._microtaskLoop (http://localhost:63593/dart_sdk.js:39335:13)
at _startMicrotaskLoop (http://localhost:63593/dart_sdk.js:39341:13)
at http://localhost:63593/dart_sdk.js:34848:9

这是一个代码片段

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

var url2 = 'https://0.0.0.0:8809/test/';
              try{
                response = await http.get(Uri.parse(url2));
                print(response.body);
              }
              catch(exception){
                print('could not access');
                    response = await http.get(Uri.parse(url2));
              }

            },

我让它把错误打印出来了。


共1个答案

匿名用户

这可能是因为您的后端未启用CORS。发生这种情况是因为您的服务器和前端存在于不同的IP上(即使您在localhost上工作,端口仍然不同)。

要解决这个问题,您只需在响应头中添加参数以启用CORS。有可用的包作为中间件,因此您不必在每个响应中添加它。参考以下问题:

如何在Django REST框架上启用CORS