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

Flutter连接Akka HTTP本地服务器报错:操作不被允许(errno=1)

解决Flutter访问Akka HTTP服务器的连接错误(errno=1)

核心问题分析

你遇到的Operation not permitted, errno = 1错误,主要原因是iOS模拟器的localhost指向自身而非宿主电脑,或是服务器绑定地址、权限配置存在偏差。Postman能正常访问是因为它直接运行在宿主电脑上,而Flutter运行在模拟器/真机环境,网络访问逻辑不同。

解决方案步骤

1. 替换请求URL中的localhost为宿主电脑的局域网IP

iOS模拟器里的localhost指向模拟器自身,无法访问宿主电脑上的Akka服务器。你需要:

  • 查找电脑的局域网IP(macOS用ifconfig或系统偏好设置-网络查看;Windows用ipconfig)
  • 将Flutter请求中的http://localhost:8080/friends_avg替换为http://你的电脑IP:8080/friends_avg

2. 修正info.plist的配置(区分iOS和macOS)

你提到的com.apple.security.network.client是macOS应用的权限配置,iOS应用无需添加。正确的iOS网络权限配置如下:

<key>NSAppTransportSecurity</key>
<dict>
    <!-- 测试环境允许任意HTTP请求,上线建议改为特定域名配置 -->
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <!-- 更安全的特定域名配置示例 -->
    <!--
    <key>NSExceptionDomains</key>
    <dict>
        <key>你的电脑IP</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
    -->
</dict>

修改后需重启模拟器和Flutter项目,确保配置生效。

3. 确保Akka HTTP服务器绑定到0.0.0.0

如果服务器仅绑定到127.0.0.1,则只有宿主电脑能访问,模拟器/真机无法连接。修改服务器绑定地址为0.0.0.0,允许所有网络接口访问:

// Akka HTTP 绑定示例
val bindingFuture = Http().newServerAt("0.0.0.0", 8080).bind(route)

4. 检查宿主电脑的防火墙设置

确保电脑防火墙未阻止8080端口的入站连接:

  • macOS:打开系统偏好设置-安全性与隐私-防火墙-防火墙选项,添加VS Code或JVM进程,允许其接收传入连接
  • Windows:在防火墙高级设置中,添加允许8080端口的入站规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:22:20