【问题标题】:How to solve insecure http not allowed by platform flutter?如何解决平台颤振不允许的不安全http?
【发布时间】:2021-01-17 09:52:54
【问题描述】:

我正在尝试从我定制的 rest api 中获取一些数据,但我遇到了很多关于这个错误的问题。我什至尝试了谷歌官方迁移指南。

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

class Home extends StatefulWidget {
  @override
  _HomeState createState() => _HomeState();
}

class _HomeState extends State<Home> {
  String PROTOCOL = "http";
  String DOMAIN = "192.168.0.5:5000";

  Future<List<dynamic>> fetchUsers() async {
    var url = "$PROTOCOL://$DOMAIN/posts";
    var result = await http.get(url);
    print(result);
    return json.decode(result.body);
  }

  @override
  Widget build(BuildContext context) {
    fetchUsers();
    return Scaffold(
      appBar: AppBar(),
      body: Container(
        child: FutureBuilder<List<dynamic>>(
          future: fetchUsers(),
          builder: (BuildContext context, AsyncSnapshot snapshot) {
            if (snapshot.hasData) {
              return ListView.builder(
                itemBuilder: (BuildContext context, int index) {
                  return Text(snapshot.data[index]['description']);
                },
                itemCount: snapshot.data.length,
              );
            } else
              return Container();
          },
        ),
      ),
    );

我的服务器已启动并运行并与邮递员合作良好,但面临颤振问题。在这里需要一些认真的帮助!

【问题讨论】:

  • 你能发布你遇到的实际错误吗?
  • 平台不允许使用不安全的 http。

标签: node.js express flutter http rest


【解决方案1】:

将这些行添加到 AndroidManifest.xml 的活动标记中

 android:usesCleartextTraffic="true"
 android:networkSecurityConfig="@xml/network_security_resource"

在res中,在res文件夹中新建一个名为xml的文件夹

在 xml 文件夹中创建一个名为 network_security_resource.xml 的新 xml 文件

添加以下代码-

<?xml version="1.0" encoding="utf-8"?>
<network-security-config>
<base-config cleartextTrafficPermitted="true">
    <trust-anchors>
        <certificates src="system" />
    </trust-anchors>
</base-config>
</network-security-config>

然后按照此处给出的步骤进行操作 https://flutter.dev/docs/release/breaking-changes/network-policy-ios-android https://developer.android.com/training/articles/security-config

如果上述步骤不起作用。尝试更改flutter分支并升级它。

我做了这两件事,现在它正在工作。我在 Flutter 1.22.0 • 频道稳定

【讨论】:

    【解决方案2】:

    临时解决您的问题。首先在 res/xml(我的完整路径是/Users/dolphin/source/third-party/Cruise/android/app/src/main/res/xml) 文件夹中添加一个配置:

    <?xml version="1.0" encoding="utf-8"?>
    <network-security-config>
        <base-config cleartextTrafficPermitted="true" />
    </network-security-config>
    

    然后在您的 AndroidManifest.xml 文件中添加此配置:

    android:networkSecurityConfig="@xml/network_security_config"
    

    这可能允许 http 流量。但它只是用于调试,最好的方法是使用 https 流量。更多信息:How to allow all Network connection types HTTP and HTTPS in Android (9) Pie?

    它解决了我同样的问题。希望对您有所帮助!

    【讨论】:

      【解决方案3】:

      简单的解决方案

      我正在使用

      final String baseUrl='http://......herokuapp.com/';

      这个网址给了我这个例外,但后来我做了 httphttps

      final String baseUrl='https://......herokuapp.com/';

      这是出于某些手机的安全目的

      这对我有用,提前谢谢!

      【讨论】:

        猜你喜欢
        • 2021-07-30
        • 2021-01-19
        • 2021-08-11
        • 2021-01-18
        • 2018-01-20
        • 2021-07-18
        • 1970-01-01
        • 2021-07-16
        • 2020-12-25
        相关资源
        最近更新 更多