# 小程序域名配置问题解决方案 **问题时间:** 2025年1月28日 **问题描述:** 取消"不校验合法域名"后,小程序无法访问接口 --- ## 一、问题诊断 ### 错误信息 ``` request 合法域名校验出错 https://www.ruilaizipj.com 不在以下 request 合法域名列表中 ``` **允许的域名列表:** - `https://mp.weixin.qq.com` - `https://ruilaizipj.com`(不带www) - `https://tcb-api.tencentcloudapi.com` ### 根本原因 1. **代码使用的域名:** `https://www.ruilaizipj.com/`(带www) 2. **白名单中的域名:** `https://ruilaizipj.com`(不带www) 3. **域名不匹配**:微信小程序严格校验域名,必须完全一致 --- ## 二、解决方案 ### 方案一:在微信小程序后台添加带www的域名(推荐)⭐ **操作步骤:** 1. **登录微信公众平台** - 访问:https://mp.weixin.qq.com - 登录您的小程序账号 2. **进入开发设置** - 左侧菜单:**开发** → **开发管理** → **开发设置** - 找到 **"服务器域名"** 部分 3. **添加域名** - 点击 **"修改"** 按钮 - 在 **"request合法域名"** 中添加: ``` https://www.ruilaizipj.com ``` - 同时检查 **"uploadFile合法域名"** 和 **"downloadFile合法域名"**,也添加: ``` https://www.ruilaizipj.com ``` - 点击 **"保存"** 或 **"提交"** 4. **重新编译小程序** - 在微信开发者工具中重新编译 - 清除缓存后测试 **优点:** - ✅ 不需要修改代码 - ✅ 使用带www的域名更规范 - ✅ 证书已配置好,直接可用 --- ### 方案二:修改代码使用不带www的域名 **操作步骤:** 1. **修改小程序代码** - 打开 `app.js` - 将 `globalData.url` 改为: ```javascript url: 'https://ruilaizipj.com/' ``` 2. **配置根域名SSL证书** - 需要为 `ruilaizipj.com` 申请SSL证书 - 或在现有证书中添加根域名(SAN扩展) 3. **修改Nginx配置** - 在 `server_name` 中添加 `ruilaizipj.com` - 确保证书支持根域名 **缺点:** - ❌ 需要修改代码 - ❌ 需要重新申请/配置SSL证书 - ❌ 根域名证书配置较复杂 --- ## 三、当前服务器配置状态 ### SSL证书状态 - **证书域名:** `www.ruilaizipj.com` ✅ - **根域名支持:** `ruilaizipj.com` ❌(证书不包含) - **证书有效期:** 2026-01-28 至 2026-04-28 ✅ ### Nginx配置状态 - **server_name:** `www.ruilaizipj.com 101.43.95.130`(已添加 `ruilaizipj.com`) - **SSL证书路径:** `/www/server/panel/vhost/cert/101.43.95.130/` - **HTTPS访问:** `www.ruilaizipj.com` ✅ 正常 ### 域名访问测试 - **`https://www.ruilaizipj.com`** ✅ 正常(200 OK) - **`https://ruilaizipj.com`** ❌ 证书不匹配(需要配置根域名证书) --- ## 四、推荐操作 ### 立即执行(方案一) 1. **在微信小程序后台添加域名:** ``` https://www.ruilaizipj.com ``` 添加到以下列表: - request合法域名 - uploadFile合法域名 - downloadFile合法域名 2. **保存配置** 3. **在微信开发者工具中:** - 清除缓存 - 重新编译 - 测试接口访问 ### 如果方案一不行,再考虑方案二 如果添加域名后仍有问题,可以: 1. 申请包含根域名的SSL证书(或使用通配符证书) 2. 修改代码使用根域名 3. 配置Nginx支持根域名 --- ## 五、注意事项 ### 1. 域名必须完全一致 - ✅ 正确:`https://www.ruilaizipj.com` - ❌ 错误:`https://www.ruilaizipj.com/`(末尾有斜杠,但通常不影响) - ❌ 错误:`http://www.ruilaizipj.com`(必须是HTTPS) ### 2. 白名单修改限制 - 每月可修改次数有限(您当前还可修改49次) - 修改后需要保存并重新编译小程序 ### 3. 开发环境 vs 生产环境 - **开发环境**:可以勾选"不校验合法域名"进行调试 - **生产环境**:必须配置白名单,否则无法访问 ### 4. 证书要求 - 必须是HTTPS(HTTP不支持) - 证书必须有效且未过期 - 证书域名必须与请求域名匹配 --- ## 六、验证步骤 ### 1. 检查白名单配置 在微信小程序后台确认: - ✅ `https://www.ruilaizipj.com` 已在 request合法域名 列表中 - ✅ `https://www.ruilaizipj.com` 已在 uploadFile合法域名 列表中 - ✅ `https://www.ruilaizipj.com` 已在 downloadFile合法域名 列表中 ### 2. 检查代码配置 在 `app.js` 中确认: ```javascript globalData: { url: 'https://www.ruilaizipj.com/' // 与白名单域名一致 } ``` ### 3. 测试访问 在微信开发者工具中: 1. 取消勾选"不校验合法域名" 2. 清除缓存 3. 重新编译 4. 测试接口调用 5. 查看Console是否有错误 --- ## 七、常见问题 ### Q1: 添加域名后仍然报错? **可能原因:** - 白名单未保存 - 小程序未重新编译 - 缓存未清除 **解决方法:** 1. 确认白名单已保存 2. 在开发者工具中清除缓存 3. 重新编译小程序 ### Q2: 为什么需要两个域名都加? **原因:** - 如果代码中可能使用不同的域名 - 或者有重定向情况 - 为了确保兼容性 **建议:** - 统一使用一个域名(推荐 `www.ruilaizipj.com`) - 在代码和白名单中都使用相同的域名 ### Q3: 证书不匹配怎么办? **如果使用根域名 `ruilaizipj.com`:** 1. 申请包含根域名的证书(或通配符证书 `*.ruilaizipj.com`) 2. 在Nginx中配置根域名的SSL证书 3. 确保证书的SAN包含 `ruilaizipj.com` --- ## 八、总结 ### 问题根源 **代码使用的域名与白名单域名不一致:** - 代码:`https://www.ruilaizipj.com/`(带www) - 白名单:`https://ruilaizipj.com`(不带www) ### 推荐解决方案 **在微信小程序后台添加 `https://www.ruilaizipj.com` 到白名单** ### 操作步骤 1. 登录微信公众平台 2. 进入开发设置 → 服务器域名 3. 添加 `https://www.ruilaizipj.com` 到所有相关域名列表 4. 保存配置 5. 重新编译小程序 --- **创建时间:** 2025年1月28日 **问题状态:** 待解决 - 需要在微信小程序后台添加域名