繁体   English   中英

为什么我的 flutter 应用程序 http 发布请求只能在本地主机上工作

[英]Why my flutter app http post request only work in localhost

我正在制作一个登录名为 function 的应用程序。它在我的本地主机上向 API 调用 HTTP POST 请求以检查用户名和密码的有效性,如果它与 PhpMyAdmin 上的数据匹配,那么它将路由到会员页面。

但是,我想将 await http.post 从本地主机 XAMPP 链接更改为我主机上的公共 API 链接。 但是每当我这样做时它都会抛出一些错误,当我点击登录按钮时什么也没有发生。 这是代码:

class _MyHomePageState extends State<MyHomePage> {
  TextEditingController user = new TextEditingController();
  TextEditingController pass = new TextEditingController();

  String msg = '';

  Future<List> _login() async {
    final response =
        await http.post("http://tunnamacbook.local/login.php", body: {
      "username": user.text,
      "password": pass.text,
    });

    var datauser = json.decode(response.body);

    if (datauser.length == 0) {
      setState(() {
        msg = "Đăng nhập thất bại";
      });
    } else {
      if (datauser[0]['level'] == 'admin') {
        Navigator.pushReplacementNamed(context, '/AdminPage');
      } else if (datauser[0]['level'] == 'member') {
        Navigator.pushReplacementNamed(context, '/MemberPage');
      }

      setState(() {
        username2 = datauser[0]['name'];
      });
    }

    return datauser;
  }

...there's more but it's unnecessary to show here...

这是错误:

[VERBOSE-2:ui_dart_state.cc(209)] Unhandled Exception: FormatException: Unexpected end of input (at character 1)
^
#0      _ChunkedJsonParser.fail (dart:convert-patch/convert_patch.dart:1405:5)
#1      _ChunkedJsonParser.close (dart:convert-patch/convert_patch.dart:523:7)
#2      _parseJson (dart:convert-patch/convert_patch.dart:41:10)
#3      JsonDecoder.convert (dart:convert/json.dart:506:36)

错误是下面的蓝线: 蓝色的 VSCode 错误

我想到了。 这是 CORS 政策的问题。 在每个 http API 调用中设置 CORS 允许 header 修复它。 对于那些想要此问题的示例代码的人,请在 Google 上搜索 CORS allow header for Flutter http call。 由于我将我的移动应用程序编程框架切换到 React Native 以获得更好的支持和更大的 Stackoverflow 社区,所以我不能再在 Flutter 中为这个问题编写代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM