# 小程序域名配置问题解决方案

**问题时间：** 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日  
**问题状态：** 待解决 - 需要在微信小程序后台添加域名
