使用websocket进行通讯时,ios上的 origin 会被微信改成它的自定义协议。
来自ChatGPT的原因分析
这是出于技术架构和安全隔离的考虑,并不直接是商业目的。
✅ 为什么 iOS 微信小游戏的 Origin 是 weapp://wechat-game-runtime
🔒 1. iOS 的 WebView 限制
iOS 微信小程序(小游戏)运行在微信自定义的 WebView 容器中,而不是标准浏览器。这个 WebView 环境:
并没有绑定一个实际的网页 URL(不像 Android 会挂上 https://你的服务器域名);
所以没有标准的 HTTPS Origin;
微信为了区分来源,设置了一个自定义协议:weapp://wechat-game-runtime 来表示“小程序游戏环境”。
这实际上是因为:iOS 系统对 WebView 的 Origin 设置更加受限,微信无法伪造 https://,于是用了自有协议来标记。
🔐 2. 增强隔离和安全
使用 weapp:// 而不是直接用服务器域名,可以:
避免小程序被恶意识别为一个真实网页;
防止泄露或被钓鱼网页伪造;
增加微信平台的控制权和请求可识别性;
与常规 Web 浏览器行为隔离,减少跨站漏洞风险;
✅ Android 为什么可以是 HTTPS Origin?
Android 的 WebView 更开放,微信可以挂上 https://你的小游戏合法域名 作为请求的来源,所以 Origin 是标准的。
🔎 类比
类似 Apple 自己的 applewebdata://;
或者微信小程序普通页面里的 Origin 也是 file:// 或 weapp:// 开头。
✅ 结论
这是一种技术上的设计决策,用于标识来源环境、增强隔离,而非为了商业壁垒。但它确实间接增加了平台封闭性,让开发者必须适配微信的安全策略。