微信小程序中,默认情况下只能访问 HTTPS 协议的接口,且域名必须在 微信公众平台配置的合法域名白名单中。如果你的小程序在关闭调试模式后无法访问以 http 开头的接口(即非 HTTPS 接口)_微信小程序怎么配置访问非htttps
在微信小程序中,默认情况下只能访问 HTTPS 协议的接口,且域名必须在 微信公众平台配置的合法域名白名单中。如果你的小程序在关闭调试模式后无法访问以 http
开头的接口(即非 HTTPS 接口),这是微信小程序的安全机制限制。
🧩 一、问题原因
http://
请求会被拦截并报错✅ 二、解决方案详解
✅ 方法一:使用 HTTPS 协议 + 合法域名白名单(推荐)
步骤:
- 将后端接口升级为 HTTPS 协议
- 可申请免费 SSL 证书(如 Let’s Encrypt)
- 登录微信公众平台
- 地址:https://mp.weixin.qq.com
- 进入「开发管理」→「开发设置」→「服务器域名」
- 添加你的 HTTPS 接口域名到以下列表中:
- request 合法域名
- uploadFile 合法域名
- downloadFile 合法域名
- websocket 合法域名
⚠️ 注意:域名必须经过 ICP 备案,并支持 HTTPS 和 TLS 1.2 以上协议版本。
✅ 方法二:通过微信云开发代理请求(适用于无后端项目)
说明:
使用微信小程序原生的 云开发 Cloud API,你可以通过云函数发起网络请求,绕过前端域名限制。
实现步骤:
- 开通微信小程序云开发功能。
- 创建一个云函数(如
requestProxy
)。 - 在云函数中使用 Node.js 的
axios
或wx-server-sdk
发起请求。 - 小程序前端调用该云函数进行数据交互。
示例代码(云函数):
// cloudfunctions/requestProxy/index.jsconst cloud = require(\'wx-server-sdk\')cloud.init()const axios = require(\'axios\')exports.main = async (event, context) => { const { url } = event try { const res = await axios.get(url) return res.data } catch (err) { return { error: err.message } }}
小程序调用:
wx.cloud.callFunction({ name: \'requestProxy\', data: { url: \'http://yourdomain.com/api/data\' }, success: res => { console.log(res.result) }})
✅ 方法三:搭建反向代理服务(推荐企业级方案)
说明:
如果后端暂时无法支持 HTTPS,可以在自己的服务器上搭建一个反向代理,将 HTTP 请求转为 HTTPS。
技术选型建议:
- 使用 Nginx / Apache 搭建反向代理
- 绑定已备案域名并申请 SSL 证书
- 将请求转发到内部 HTTP 接口
示例 Nginx 配置:
server { listen 443 ssl; server_name api.yourdomain.com; ssl_certificate /path/to/fullchain.pem; ssl_certificate_key /path/to/privkey.pem; location / { proxy_pass http://internal-api-server:8080; proxy_set_header Host $host; }}
✅ 方法四:本地测试阶段使用“不校验合法域名”开关(仅限开发环境)
说明:
在 开发者工具中开启“不校验合法域名、HTTPS 证书”,即可临时访问任意接口。
路径:
- 打开开发者工具
- 点击右上角三个点 → 设置 → 安全
- 启用“服务端口”和“不校验合法域名、HTTPS 证书”
⚠️ 注意:此方法仅用于开发测试,不能上线发布
📊 三、总结对比表
✅ 最佳实践建议
如需进一步了解如何在 uni-app 中封装统一的网络请求模块(支持自动切换线上/测试环境)、或如何结合微信云开发实现完整的用户登录流程,请继续提问,我可以为你提供完整代码模板。