小程序上线前:域名、备案与主体一致性
代码写完只是开始。小程序真正卡住进度的地方,往往是一条"域名不合法"的报错,而它背后是一整套备案规则。
一、先弄清楚三个不同的东西
很多人把这三件事混成一件事,然后卡在里面出不来:
| 名称 | 是什么 | 作用范围 |
|---|---|---|
| ICP 备案 | 网站/域名在管局的登记 | 域名能否在国内服务器上提供访问 |
| 小程序备案 | 小程序本身在管局的登记 | 小程序能否上架发布 |
| request 合法域名 | 小程序后台配置的服务器白名单 | 小程序能否调用这个域名 |
三件事各自独立,但有一条把它们串起来:配进 request 合法域名的域名,必须是已完成 ICP 备案的域名,而且备案主体最好和小程序主体一致。
二、"备案主体一致"这件事有多硬
实测下来,这条比想象中硬。个人备案的域名,挂到企业主体的小程序里,在部分校验路径上会被直接拒绝;即使配置时没拦住,后续审核或抽查也会提出来。
反过来,企业备案的域名给个人小程序用,同样别扭。所以正确的顺序是:
- 确定小程序的主体类型(个人 / 企业)。
- 用同一主体的名义完成域名 ICP 备案。
- 把域名配进 request 合法域名。
备案主体不能"变更"。个人备案想转成企业备案,只能注销后重新备案,注销期间域名不可访问。这一条对项目排期的影响,比审核时长本身大得多。
三、几个常见的误判
误判一:用 IP 地址
request 合法域名只接受域名,不接受 IP,也不接受带路径的 URL。这是硬性的,绕不过去。
误判二:用未备案的域名试一下
配置时可能保存成功,但真机请求会失败。而且这类失败在开发者工具里勾上"不校验合法域名"就看不出来,很容易误判为"已经通了"。
误判三:以为体验版可以免掉域名校验
体验版免的是提交审核和小程序备案,不免域名校验。真机上跑的体验版,依然要求域名已备案、已配置。只有开发者工具里的"跳过域名校验"选项能绕过,而那个选项在真机上不存在。
误判四:换个非标端口就能用
域名是允许带端口的,配置里写 https://example.com:8443 是合法的。但这只解决了"端口能不能连",解决不了"域名有没有备案",两件事别混。
四、换服务器要不要重新备案
这是被问得最多的一个问题。实际情况取决于接入商是否变化:
| 场景 | 要做什么 |
|---|---|
| 同一服务商内换服务器 | 一般无需重新备案,改解析即可 |
| 换到另一个服务商 | 需要办理"接入备案",把备案接入到新服务商 |
| 换主体(个人 → 企业) | 不能变更,只能注销重备 |
接入备案的前置条件里有一条容易被忽略:服务器必须是包年包月、且剩余时长满足要求。按量付费或试用机不能用于备案,这是最常见的一种"提交了但过不了"。
五、上线前我自己的检查清单
- 域名能在公网 HTTPS 正常访问,证书链完整(不是自签)。
- 域名的 ICP 备案号真实可查,且接入商是当前服务商。
- 备案主体与小程序主体一致(或已确认合规路径)。
- request 合法域名、uploadFile、downloadFile 三类白名单都配了,不只是 request。
- 真机 + 正式版(不是开发者工具)完整走一遍流程。
- 网站底部展示备案号并链接到工信部,这是核查项。
六、一句经验
技术问题通常当天能解,备案问题按周计。所以排期的时候,把备案当成和开发并行的第一条主线,而不是上线前的一道手续。
最容易吃亏的做法是:等代码写完再去办备案,然后发现主体不对,要么等,要么推翻重来。