上周帮朋友看一个小程序,代码没问题,提交审核被拒了三次。原因写得很含糊,翻来覆去就一句“服务端配置不符合要求”。折腾半天才定位到:他的接口域名压根没做 ICP 备案。这个坑其实特别常见,尤其是自己从零写后端的独立开发者,前端调通了就以为万事大吉,结果卡在备案上。
今天把这件事说清楚,省得你走弯路。
先说结论:小程序本身不需要备案,但你的域名需要
很多人一听到“小程序域名备案”就懵,以为要给小程序申请个备案号。不是的。小程序是跑在微信里的应用,它没有独立的域名概念。真正要备案的是你后端接口所用的那个域名,也就是你在小程序后台“服务器域名”里填的那一长串 https 地址。
微信的要求很硬:request 合法域名、socket 合法域名、uploadFile/downloadFile 合法域名,全部必须是已备案的域名,且必须支持 https。没备案的域名,你在开发者工具里能调通(因为工具可以勾选“不校验合法域名”),但真机一跑就废,提交审核更是过不去。
备案到底在备什么
ICP 备案本质是把域名和你的主体信息绑定,报到工信部系统里。流程大致是:买域名 → 买服务器(大陆地区)→ 在服务商的控制台提交备案 → 管局审核 → 下发备案号。
几个容易忽略的点:
- 服务器必须在大陆。如果你图便宜买了香港或海外的服务器,是没法做 ICP 备案的。有人会说“那我用海外服务器不就绕开备案了”,技术上小程序确实能访问,但审核阶段微信会核查域名备案状态,没备案号直接驳回。
- 域名持有者要和备案主体一致。个人备案就用个人身份,企业备案就用营业执照,别混着来。
- 备案周期不短。服务商初审一两天,管局审核一般 7 到 20 个工作日。也就是最快也要一周多。所以别等到代码写完才想起来备案,那时候你只能干等。
正确的开发节奏
我现在的习惯是,项目一立项,第一天就把域名买了、备案提上去。备案期间该写代码写代码,用本地 mock 或者临时用个已备案的测试域名顶着。等备案下来,切正式域名,改一下配置就行。
小程序后台配置域名的地方在「开发管理 → 开发设置 → 服务器域名」。注意每个月修改次数有限制(一般 5 次),别拿它当草稿本反复改。
// 备案下来后,记得检查请求封装里的 baseURL
const BASE_URL = 'https://api.yourdomain.com'
wx.request({
url: `${BASE_URL}/user/info`,
method: 'GET',
success(res) {
console.log(res.data)
}
})
顺便提一句,如果你用了云开发,走的是微信自己的云函数和云数据库,不涉及自有域名,那这块就省了。但一旦你要对接自己的后端、要接支付回调、要用第三方对象存储,域名备案就跑不掉。
几个真实踩过的坑
- 二级域名也要备案。主域名备案了,你新解析一个 api.xxx.com 是没问题的,因为它属于同一个主域名。但如果你另买了一个完全不同的域名做接口,那得单独备案。
- https 证书别忘了。备案只解决“能不能用”,https 解决“审核过不过”。微信明确要求 https,而且证书要有效、不能是自签的。免费证书(比如 Let's Encrypt 或者云服务商送的)完全够用。
- 备案信息变更要及时。换了服务器、换了主体信息,记得做备案变更。不然被抽查到,域名可能被注销,小程序接口直接挂掉,用户端一片报错。
写在最后
备案这事本身不复杂,就是耗时间。真正麻烦的是你不知道它存在,等审核被拒了才回头补,一来一回半个月就没了。尤其是接私活或者做外包的朋友,报价的时候记得把备案周期算进排期里,跟客户提前说清楚,别到时候被追着问“怎么还不上线”。
一句话总结:代码可以慢慢写,域名备案第一天就提。

评论 (0)
还没有评论,快来抢沙发吧~