问题描述
在使用Unity尝试连接到服务器上的端口时,出现网络连接报错
Non-secure network connections disabled in Player Settings
问题解决
1. 打开Edit->Project Settings
2. 找到 Player -> Other Settings
3. 将其中的 Configuration -> Allow downloads over HTTP 设置为 Always allowed(不用管警告)
问题发生原因
HTTP 与 HTTPS 的对比
特性 | HTTP | HTTPS |
---|---|---|
数据加密 | 不加密,数据以明文传输,易被窃听 | 加密数据传输,保护敏感信息(基于 TLS/SSL) |
身份验证 | 无身份验证,容易遭受中间人攻击 | 服务器身份由证书认证,防止中间人攻击 |
数据完整性 | 无完整性保护,可能被篡改或伪造 | 通过数字签名保证数据完整性 |
性能开销 | 较低(无加密、握手开销) | 较高(需要握手和加密解密,但影响较小) |
SEO 排名 | 无额外 SEO 加权 | 搜索引擎优先排名,谷歌等对 HTTPS 有权重加成 |
用户信任 | 浏览器标记为“Not Secure”不安全 | 浏览器标记为“Secure”安全,提升用户信任 |
适用场景 | 非敏感信息传输(如普通博客) | 敏感数据传输(如支付、登录)或强用户信任场景 |
HTTPS 的主要优势
-
安全性高:
- 防止流量被窃听或篡改。
- 通过加密确保数据机密性,尤其在公共网络环境中(如咖啡馆 Wi-Fi)。
- 防止中间人攻击和假冒网站。
-
搜索引擎优待:
- 搜索引擎(如谷歌)对 HTTPS 网站的排名更高。
-
用户信任:
- HTTPS 网站的地址栏显示安全标志(如锁图标)。
- 浏览器标记 HTTP 为“不安全”,可能吓跑用户。
-
符合现代规范:
- HTTPS 已成为默认标准,主流平台和 API 要求使用 HTTPS。
HTTP 被认定为“不安全”的原因(尤其在 Unity 中)
-
缺乏加密:
HTTP 不对数据进行加密,所有传输的数据都可以被监听到。这对于 Unity 开发中的游戏数据、用户隐私、交易信息等非常危险。 -
中间人攻击风险:
在 HTTP 中,攻击者可以通过中间人攻击拦截并篡改数据,例如游戏的实时状态更新或交易记录。 -
现代安全标准要求:
浏览器、Unity WebGL 以及主流平台都强制要求 HTTPS,特别是在处理 Web 请求或访问资源时。Unity 为了保障游戏数据和用户隐私,默认将 HTTP 标记为“不安全”。 -
证书验证问题:
HTTPS 的证书机制可以确保访问的是合法服务器,而 HTTP 无法验证来源。这对于游戏开发中的远程服务器调用尤为重要。 -
Unity 官方规范:
Unity 的 WebGL 构建和 Web API 交互通常需要在 HTTPS 环境下运行,确保与主流浏览器的兼容性。这一点尤其重要,当你准备在Unity Play上愉快玩耍的时候,这个警告就会再次跳出来扰兴。
此时便只有将服务器从http升级到https这一条路可以走了。