256 lines
6.1 KiB
Markdown
256 lines
6.1 KiB
Markdown
|
|
# 小程序域名配置问题解决方案
|
|||
|
|
|
|||
|
|
**问题时间:** 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日
|
|||
|
|
**问题状态:** 待解决 - 需要在微信小程序后台添加域名
|