努力
加油

微信小程序如何配置自己的服务器域名和接口地址?

配置微信小程序的服务器域名(包括请求地址、上传下载域名等)是开发过程中最基础但也最容易踩坑的一环。很多新手开发者往往卡在“request: fail url not in domain list”这个报错上。

这里需要明确一个核心概念:微信小程序后台配置的域名,不是让你填 IP 地址,也不是随便填什么路径,而是指你的业务服务器的根域名或特定子域名。

下面我将从准备工作、具体操作步骤、常见误区与排查三个维度,把这件事讲透。


一、 准备工作:你拥有什么?

在去微信后台操作之前,请确保你已经完成了以下前置条件,否则后续步骤无法进行:

  1. 已注册的小程序账号:拥有管理员权限的 AppID。
  2. 已备案的域名:这是国内云厂商(阿里云、腾讯云、华为云等)的硬性要求。微信小程序强制要求服务器域名必须经过 ICP 备案。
    • 注意:不支持 HTTP 协议,只支持 HTTPS。这意味着你需要配置 SSL 证书。
  3. 有效的 SSL 证书:如果你的域名是 api.yourdomain.com,你需要在这个域名下部署有效的 HTTPS 证书(Let’s Encrypt、阿里云免费证书、或者购买的企业级证书均可)。
  4. 服务器环境就绪:你的后端服务(Node.js, Java, Python, Go 等)已经部署成功,并且可以通过 https://api.yourdomain.com/xxx 正常访问。

二、 具体操作步骤

登录 微信公众平台,进入你的小程序管理后台。

1. 找到配置入口

在左侧菜单栏中,依次点击:

设置 -> 开发设置 -> 服务器域名

你会看到四个主要的配置项:

  • request 合法域名:前端 wx.request() 请求的地址。
  • uploadFile 合法域名:前端 wx.uploadFile() 上传图片/文件的地址。
  • downloadFile 合法域名:前端 wx.downloadFile() 下载文件的地址。
  • socket 合法域名:前端 wx.connectSocket() WebSocket 连接的地址。

2. 填写域名规则(关键!)

微信对域名的格式有严格要求,请务必遵守以下规则:

  • 只能填域名,不能填 IP:例如,必须填 https://api.example.com,绝对不能填 https://192.168.1.100。
  • 不能带端口号:如果使用了非标准端口(如 8080),必须在 Nginx/Apache 层面做反向XX,对外统一暴露 443 端口,然后只填域名。
  • 必须包含协议头:虽然通常默认 HTTPS,但建议显式写明 https://。
  • 通配符支持:如果你有多个子域名,可以使用通配符。例如,你想让 a.example.com 和 b.example.com 都可用,可以填 *.example.com。但注意,通配符只能匹配一级子域名,不能匹配多级(如 sub.a.example.com 无法被 *.example.com 覆盖)。
  • 最多 50 个域名:每个类别(request/upload/download/socket)最多添加 50 个域名。如果业务复杂,需要合理规划域名结构。

示例填写:
假设你的后端接口都在 api.cloudservice.cn,且所有文件上传下载也走这个域名:

配置项 填写内容 说明
request 合法域名 https://api.cloudservice.cn 用于获取数据
uploadFile 合法域名 https://api.cloudservice.cn 用于上传图片
downloadFile 合法域名 https://cdn.cloudservice.cn 专门用于静态资源下载,可独立域名
socket 合法域名 wss://ws.cloudservice.cn WebSocket 使用 wss 协议

3. 提交并生效

填写完成后,点击页面底部的“保存”。配置即时生效,无需重启服务器。


三、 常见误区与排错指南(血泪经验)

在实际开发中,90% 的域名配置问题出在以下几个地方:

1. “我在本地测试怎么不行?”

  • 现象:真机调试或预览时,提示域名未配置。
  • 原因:微信开发者工具在“详情”->“本地设置”中,有一个选项叫 “不校验合法域名、web-view(业务域名)、TLS 版本以及 HTTPS 证书”。
  • 解决:
    • 开发阶段:勾选此选项,可以绕过域名校验,方便本地调试。
    • 上线前:必须取消勾选,并确保域名已在后台正确配置,否则线上用户无法使用。

2. “我配了域名,但还是报 URL not in domain list”

  • 检查点 1:路径是否被截断?
    微信校验的是主机名(Host),而不是完整 URL。只要请求的 Host 在你配置的域名列表中即可。例如你配了 https://api.example.com,那么 https://api.example.com/user/login 和 https://api.example.com/api/v1/data 都是合法的。
  • 检查点 2:是否有重定向?
    如果你的域名 A 会 301 跳转到域名 B,而域名 B 没有配置,也会失败。确保最终请求的 Host 是已配置的域名。
  • 检查点 3:HTTPS 证书是否有效?
    即使域名配对了,如果 SSL 证书过期、自签名证书不被信任、或者证书绑定的域名不一致,也会导致请求失败。可以在浏览器中输入你的域名,看是否能正常加载且无安全警告。

3. “我想用 CDN 提速怎么办?”

  • 最佳实践:将静态资源(图片、JS、CSS)放在 CDN 域名下,如 static.yourdomain.com,并在“downloadFile 合法域名”中添加该 CDN 域名。
  • 注意:CDN 域名同样需要备案和 HTTPS 证书。大多数云厂商的 CDN 服务会自动帮你处理证书更新,但需确认 CDN 回源域名和边缘节点域名都已正确配置。

4. “多环境管理(开发/测试/生产)”

  • 不要频繁切换域名:建议在代码层面通过环境变量控制 Base URL。
  • 流程建议:
    1. 开发环境:使用开发者工具的“不校验域名”功能,直接指向内部测试服务器 IP 或内网域名(仅本地有效)。
    2. 测试环境:申请一个独立的测试域名(如 test-api.yourdomain.com),完成备案后,在微信后台添加。
    3. 生产环境:使用正式域名,严格校验。

四、 总结与建议

  1. 域名备案是前提:没有备案号,微信后台根本不会让你提交域名配置。
  2. HTTPS 是强制要求:从 2022 年起,微信小程序全面强制 HTTPS,HTTP 请求会被直接拦截。
  3. 区分业务域名和资源域名:建议将 API 接口域名和静态资源域名分开配置,便于管理和权限控制。
  4. 利用通配符简化配置:如果子域名较多,合理使用 *.yourdomain.com 可以减少配置数量。
  5. 开发期善用“不校验”选项:提高开发效率,但上线前务必关闭并真实配置。

按照以上步骤操作,基本可以解决 99% 的域名配置问题。如果遇到具体的证书错误或网络超时,再结合服务器日志(Nginx/Apache/Error Log)进一步排查。