Unity 运行报错:InvalidOperationException: Insecure connection not allowed 的原因
当你在 Unity 中运行项目时,如果遇到 InvalidOperationException: Insecure connection not allowed 这个错误,通常是由于以下原因导致的:
1. UnityWebRequest 的安全限制
UnityWebRequest 是 Unity 用于发送 HTTP 请求的核心组件。从 Unity 2022.1 版本开始,为了提高安全性,Unity 默认禁止使用不安全的 HTTP 连接(即以 http:// 开头的地址),只允许安全的 HTTPS 连接(以 https:// 开头的地址)。如果你的代码尝试通过 UnityWebRequest 访问一个 HTTP 地址,而项目的安全设置未允许这种行为,就会抛出这个异常。
2. 错误触发场景
这个错误通常发生在以下情况:
- 你的代码中明确指定了一个 HTTP URL(例如 http://example.com),而不是 HTTPS URL。
- 项目中使用的第三方库或插件尝试访问一个不安全的 HTTP 地址,而你未察觉。
- 项目配置默认禁用了不安全的连接,而代码未做相应调整。
3. 项目配置的影响
Unity 提供了一个选项来控制是否允许不安全的 HTTP 连接,位于:
- Edit > Project Settings > Player > Other Settings > Configuration > Allow downloads over HTTP
默认情况下,这个选项被设置为不允许不安全连接(即只允许 HTTPS)。如果你的代码尝试访问 HTTP 地址,而此设置未调整,就会触发该错误。
解决方法
- 改用 HTTPS 连接(推荐)
- 将所有 HTTP URL 更改为 HTTPS 版本
- 确保您连接的服务器支持 HTTPS
- 修改项目安全设置
- 在 WebGL 平台,可在 PlayerSettings 中配置网络安全设置
- 对于 iOS,可以在 Info.plist 中添加 ATS 例外
- 对于 Android,可以修改网络安全配置
- 在开发环境中临时禁用安全限制(仅用于测试)
- 在 Unity Editor 中可以设置为允许不安全连接,但发布时应遵循安全最佳实践
请注意,出于安全考虑,现代应用开发应优先使用 HTTPS 连接,尽量避免使用不安全的 HTTP 连接。