在微信小程序中与轻量应用服务器(如腾讯云轻量应用服务器、阿里云轻量服务器等)通信,需满足微信的安全限制和网络要求。以下是关键的网络配置和注意事项,按步骤梳理:
✅ 一、核心前提:必须使用 HTTPS(强制要求)
微信小程序 禁止使用 HTTP 协议 与后端通信(wx.request 等 API 仅支持 HTTPS),因此轻量服务器必须配置有效的 HTTPS 证书。
🔹 配置步骤:
-
绑定域名并备案(中国大陆必需)
- 小程序后台 →「开发管理」→「开发设置」→「服务器域名」→ 添加
request合法域名(如https://api.yourdomain.com)。
✅ 要求:- 域名必须已通过 ICP 备案(个人/企业主体均可,但必须备案成功);
- 域名不能是 IP 地址(如
https://118.24.123.45❌ 不允许); - 必须是二级及以上域名(如
api.example.com✅,example.com✅,a.b.c❌ 不支持三级纯子域无主域); - 仅支持
https://开头的域名(不支持wss://、http://、ftp://等)。
- 小程序后台 →「开发管理」→「开发设置」→「服务器域名」→ 添加
-
为域名配置 SSL 证书(HTTPS)
- 推荐方式(轻量服务器常用):
- ✅ 使用 Nginx/Apache 反向X_X + 免费 Let’s Encrypt 证书(推荐 Certbot 自动部署);
- ✅ 腾讯云轻量服务器可直接在控制台「应用管理」中一键部署「LNMP/LAMP」环境,再通过「SSL 证书」功能申请并自动部署;
- ✅ 阿里云轻量服务器可通过「宝塔面板」图形化安装 SSL(支持一键申请 Let’s Encrypt);
- ⚠️ 注意:证书需绑定到你添加到小程序后台的完全匹配域名(如
api.yourdomain.com),且证书链完整、未过期。
- 推荐方式(轻量服务器常用):
✅ 二、服务器端网络配置(轻量服务器)
| 配置项 | 要求 | 操作示例 |
|---|---|---|
| 安全组/防火墙 | 开放 443 端口(HTTPS),建议关闭 80 端口或重定向到 443 | 腾讯云:控制台 → 轻量服务器 → 实例 →「安全组」→ 添加入站规则:TCP:443; 阿里云:轻量服务器 →「防火墙」→ 添加规则:端口范围 443/443,协议 TCP |
| Web 服务监听 | Nginx/Apache 必须监听 443 端口,并正确加载证书 |
Nginx 示例:server {<br> listen 443 ssl;<br> server_name api.yourdomain.com;<br> ssl_certificate /etc/letsencrypt/live/api.yourdomain.com/fullchain.pem;<br> ssl_certificate_key /etc/letsencrypt/live/api.yourdomain.com/privkey.pem;<br> ...<br>} |
| CORS(可选但推荐) | 小程序 wx.request 不受浏览器 CORS 限制,所以服务端无需配置 Access-Control-Allow-Origin(⚠️ 注意:这不是浏览器,无需跨域头!) |
✅ 小程序请求不走浏览器同源策略,服务端无需任何 CORS 配置; ❌ 错误认知:给小程序后端加 Access-Control-Allow-Origin: * 是无效且多余的(除非你也用该接口供 H5 调用) |
✅ 三、小程序端调用规范(代码侧验证)
// ✅ 正确:使用已配置的 HTTPS 域名(与后台一致)
wx.request({
url: 'https://api.yourdomain.com/v1/user',
method: 'GET',
success(res) {
console.log(res.data);
}
});
// ❌ 错误示例:
// - http://api.yourdomain.com(协议错误)
// - https://118.24.123.45(IP 地址不被允许)
// - https://yourdomain.com(若后台只配置了 api.yourdomain.com,则此域名未授权)
✅ 四、其他重要注意事项
| 项目 | 说明 |
|---|---|
| 域名唯一性 | 每个环境(开发/体验/正式)需分别配置对应域名;开发版可临时使用「本地调试」+「不校验合法域名」(仅限开发者工具勾选,上线前必须关闭且配置合法域名) |
| 证书有效性 | 微信校验证书:需由受信任 CA 签发(Let’s Encrypt、腾讯云 SSL、阿里云 SSL 均支持);自签名证书 ❌ 无法通过 |
| 后端接口响应 | 建议返回标准 JSON,Content-Type: application/json;避免返回 HTML 或重定向(会导致 fail: net::ERR_CONNECTION_REFUSED 类错误) |
| 调试技巧 | 使用 wx.request 的 fail 回调 + console.log 查看错误码:– request:fail net::ERR_CERT_COMMON_NAME_INVALID → 域名与证书不匹配– request:fail errCode:-1 → 域名未配置或非 HTTPS– request:fail timeout → 服务器未响应或防火墙拦截 |
✅ 五、推荐最佳实践(轻量服务器快速落地)
- 购域名 → 完成 ICP 备案(约 1–20 工作日);
- 解析域名:将
api.yourdomain.comCNAME 或 A 记录指向轻量服务器公网 IP; - 部署 Web 服务(如 Nginx + Node.js/PHP/Python 后端);
- 申请并部署 SSL 证书(推荐 Certbot 或云厂商控制台一键部署);
- 配置安全组开放 443 端口;
- 小程序后台添加
request合法域名https://api.yourdomain.com; - 真机测试(开发者工具「不校验域名」仅用于开发,务必真机验证)。
💡 补充:若需 WebSocket(如实时聊天),还需额外配置 socket 合法域名(wss:// 协议),同样需备案+HTTPS+证书。
需要我为你提供:
- Nginx + Let’s Encrypt 一键部署脚本?
- 腾讯云/阿里云轻量服务器 SSL 配置图文指引?
- 小程序 request 封装模板(带 loading、错误统一处理)?
欢迎随时提出 👍
云小栈