服务器与大带宽专家 · 持牌IDC/CDN/ISP服务商
简米科技官网JIANMI TECH
资讯 2026-10-23 简米科技 2,981 字 7 分钟阅读

socket合法域名格式规范有哪些?具体写法示例是什么?,socket域名配置要求及写法示例

导读Socket合法域名格式规范的核心是:域名必须使用wss://或https://协议前缀,不能带路径参数,且端口号需与域名主体一起校验,否则小程序或App会拒绝连接,很多开发者第一次配置socket域名时,以为随便填个IP或普通网址就行,结果真机调试时直接报url not in domain list,这篇文章……

Socket合法域名格式规范的核心是:域名必须使用wss://或https://协议前缀,不能带路径参数,且端口号需与域名主体一起校验,否则小程序或App会拒绝连接。

很多开发者第一次配置socket域名时,以为随便填个IP或普通网址就行,结果真机调试时直接报url not in domain list,这篇文章把格式规范、写法示例和常见的坑一次说透。

socket合法域名格式规范是什么

业内专家指出,socket合法域名是指通过平台审核、允许WebSocket连接的域名白名单,它和普通HTTPS域名最大的区别在于协议层必须支持WSS(WebSocket Secure),以及校验规则更严格。

核心格式要求

  • 协议头:必须是wss://或https://,http://和ws://在小程序正式环境中一律不合法
  • 域名主体:只能是标准域名,不能是IP地址(本地调试除外)
  • 端口号:可省略,如果写端口则必须跟在域名后面用冒号连接
  • 路径:完全不允许出现,例如wss://example.com/socket是非法写法
  • 查询参数:同样禁止,?token=xxx这种写法直接报错

一个标准的合法域名写法

wss://api.yourdomain.com
wss://api.yourdomain.com:8080
https://socket.yourdomain.com

错误的写法示例

ws://api.yourdomain.com          // 未加密协议
http://api.yourdomain.com         // 普通HTTP
https://api.yourdomain.com/socket // 带了路径
https://192.168.1.1:8080          // 使用IP地址

这里有个容易混淆的点:https://域名也属于socket合法域名的允许范围,因为WebSocket的握手请求可以基于HTTPS协议发起,但如果你在代码里用的是wx.connectSocket,那么填https://不会被识别为socket地址,必须用wss://,所以规范写法是只填域名主体,把协议和路径的控制权交给平台和业务代码。

微信小程序socket域名怎么配置

微信小程序的socket域名配置入口在微信公众平台后台,路径是:开发管理 -> 开发设置 -> 服务器域名 -> socket合法域名。

配置操作步骤

  1. 登录微信公众平台,进入「开发」->「开发管理」
  2. 找到「服务器域名」区域,点击「修改」
  3. 在「socket合法域名」输入框中填写你的域名,例如wss://push.weapp.com
  4. 点击保存,等待几分钟生效

配置时的三个关键限制

  • 域名必须已完成ICP备案,且指向的服务器IP与备案信息一致
  • 支持配置最多20个socket合法域名,但每个域名只能填写一次
  • 不支持IP、不支持localhost、不支持带端口以外的任何后缀

有些开发者会问:端口号什么时候需要写?如果你的服务用默认的443端口,可以省略,但如果你用8080、8443或其他自定义端口,必须完整写出端口号,平台校验端口时是精确匹配的,比如填了wss://api.example.com:8080,代码里连wss://api.example.com:8443都连不上。

本地调试不走校验的场景

开发阶段在开发者工具中勾选「不校验合法域名」,可以绕过域名校验,但真机预览和上线后,这个开关完全失效,必须用合法域名,行业共识认为,正规项目应该在一开始就使用正式域名,并把开发环境的socket服务代理到该域名下的子路径,避免上线前手忙脚乱。

socket合法域名和普通域名有什么区别

很多新手混淆了普通request域名和socket域名的规则,这里用一张表说清楚:

对比项 socket合法域名 request合法域名
协议要求 必须wss或https 必须https
是否允许路径 不允许 不允许
是否允许IP 不允许 不允许
端口规则 必须精确匹配 必须精确匹配
典型用途 WebSocket长连接 HTTP接口请求
配置位置 同一后台不同输入框 同一后台不同输入框

本质上两者的格式规范很相似,但socket域名对长连接的稳定性要求更高,因为WebSocket连接一旦建立就会一直保持,平台在审核时会对域名的TLS证书强度、服务器稳定性做更严格的检查,如果证书过期或服务器频繁断连,你的socket域名可能会被临时封禁。

免费socket域名可以用吗

这里说的免费域名,通常指tk、ml这类免费顶级域名,或者某些云平台的临时域名,答案分两种情况:

开发测试阶段

可以临时使用,但需要注意:

  • 免费域名的ICP备案状态多为无,在微信开发者工具中勾选「不校验合法域名」后能跑通
  • 如果使用ngrok等内网穿透工具生成的临时域名,格式上是https://xxx.ngrok.io,同样只能在本地调试

正式上线阶段

强烈不建议用免费域名,原因有三点:

  1. 免费域名无法正常备案,就算平台审核通过,随时可能被收回
  2. 证书申请和续期麻烦,很多免费域名不支持自动化签发WSS证书
  3. 稳定性差,服务器IP变更后域名解析不及时,业务直接断连

更好的方案是使用二级域名,比如你的主域名是example.com,可以专门创建一个socket.example.com指向WebSocket服务,这样既满足格式要求,又不影响现有HTTP接口的域名布局。

关于socket合法域名格式的常见问题

Q:socket域名配置成功但连接时提示failed to connect,怎么排查?

先检查端口是否被防火墙拦截,再确认TLS证书链是否完整,用openssl s_client -connect 域名:端口可以快速验证证书状态,另外别忘了在微信公众平台后台的「开发设置」里,确认域名已经处于「已生效」状态,有时修改后需要等几分钟。

Q:一个socket合法域名可以配置多个端口和路径吗?

端口只能写一个,路径完全不允许填写,如果业务需要多个socket服务,正确做法是申请多个子域名,例如push1.example.com和push2.example.com,分别配置,如果你的服务需要按用户区分连接,建议在连接时用请求头或子协议字段传递业务标识,而不是依赖URL路径。

Q:IP地址真的不能配置为socket合法域名吗?

常规情况下不能,但微信公众平台对局域网IP有特殊支持,在「开发设置」中,有一个「局域网」选项,可以勾选允许168.开头的IP地址,这仅限于同一个局域网内的调试场景,公网环境一律不适用,上线项目必须用域名。

socket合法域名的格式规范并不复杂,核心就是记住协议限定WSS/HTTPS、禁止路径和参数、域名需备案,如果你卡在配置上,先检查这三项,再考虑证书和端口问题。

分享本文
本文为 简米科技官网 原创,已由运维技术专家审核。转载请注明来源:原文链接
售前咨询 服务热线 售后 邮箱