订阅号JS安全域名是微信公众平台为公众号网页调用JS-SDK而设置的可信域名白名单,入口在“设置与开发-公众号设置-功能设置-JS接口安全域名”,完成域名归属验证后,页面才能通过wx.config调用分享、拍照、扫一扫等微信能力。
订阅号js安全域名是什么?和网页授权域名有什么区别
一句话理解JS安全域名
订阅号JS安全域名,解决的是“哪些网页有资格调用微信JS-SDK”的问题,它不是网页访问域名,也不是支付域名,而是微信给前端JS接口开的一张通行证。
没有配置或配置错误时,常见现象是:
- 自定义分享标题、描述、缩略图不生效。
wx.chooseImage、wx.scanQRCode、wx.getLocation调用失败。- 控制台报
invalid signature、permission denied。 - 微信客户端提示“当前页面未配置JS接口安全域名”。
和网页授权域名、业务域名、支付授权目录的区别
| 配置项 | 主要用途 | 典型接口 | 常见报错 |
|---|---|---|---|
| JS接口安全域名 | 调用微信JS-SDK | 分享、拍照、扫一扫、地理位置 | invalid signature |
| 网页授权域名 | OAuth2.0获取用户信息 | 获取openid、userinfo | redirect_uri参数错误 |
| 业务域名 | 微信内打开网页、跳转 | 网页访问、支付跳转 | 非微信官方网页 |
| 支付授权目录 | 微信支付发起页 | JSAPI支付 | 当前页面URL未注册 |
这四项经常被混在一起,实际开发中,一个页面可能同时涉及JS安全域名和网页授权域名,但它们要分别配置,不能互相替代。
哪些场景必须配置
- 做公众号活动页,需要自定义微信分享卡片。
- 上传图片、拍照、录音、识别语音。
- 调用微信扫一扫、获取经纬度。
- 使用微信卡券、微信小店、部分客服接口。
- 页面内嵌H5,需要通过JS-SDK增强体验。

行业共识认为,安全域名配置只是白名单,不代表接口一定可用,还要看公众号类型、认证状态和接口权限。
订阅号js安全域名怎么配置?公众号后台操作步骤
配置前准备
- 一个可公网访问的域名,
h5.example.com。 - 域名已完成ICP备案,据工信部要求,境内提供互联网信息服务的网站通常需要备案。
- 域名支持HTTPS更稳妥,微信生态内大量接口要求安全传输。
- 能修改域名根目录或服务器配置,用于上传验证文件。
- 公众号管理员扫码确认,部分操作需要管理员权限。
后台填写与验证
- 登录微信公众平台。
- 进入“设置与开发” -> “公众号设置” -> “功能设置”。
- 找到“JS接口安全域名”,点击“设置”。
- 填写域名时只写域名,不写
http://、https://,不写端口,不写路径。 - 保存后下载
MP_verify_xxxxxx.txt。 - 把文件上传到域名根目录,确保
https://你的域名/MP_verify_xxxxxx.txt能直接打开。 - 回到后台点击验证,验证通过后,该域名进入白名单。
如果使用Nginx,可以确认根目录映射:
server {
listen 443 ssl;
server_name h5.example.com;
root /var/www/h5;
index index.html;
}
验证文件应放在 /var/www/h5/MP_verify_xxxxxx.txt。
前端wx.config调用示例
wx.config({
debug: false,
appId: '你的公众号appId',
timestamp: 1710000000,
nonceStr: '随机字符串',
signature: '服务端生成的签名',
jsApiList: [
'updateAppMessageShareData',
'updateTimelineShareData',
'chooseImage',
'scanQRCode'
]
});
wx.ready(function () {
wx.updateAppMessageShareData({ '分享标题',
desc: '分享描述',
link: location.href.split('#')[0],
imgUrl: 'https://你的域名/share.png'
});
});
wx.error(function (res) {
console.log('JS-SDK错误', res);
});

服务端签名核心逻辑
签名不能放前端,否则会泄露 appSecret,服务端先拿 access_token,再换 jsapi_ticket,然后按固定顺序拼接字符串并做SHA1。
jsapi_ticket=xxx&noncestr=xxx×tamp=xxx&url=https://h5.example.com/page
url 是当前网页完整URL,不包含 后面的片段。jsapi_ticket 要缓存,不要每次请求都重新获取。
业内专家指出,JS-SDK签名失败多数不是接口权限问题,而是URL和ticket缓存处理不一致。
上海企业订阅号js安全域名配置要收费吗
微信公众平台本身不收取JS安全域名配置费,后台填写和验证是免费的,真实成本通常来自配套资源:
- 域名费用:常见域名年费几十元到上百元不等。
- 服务器费用:云服务器、虚拟主机或容器服务,年费从数百元到数千元不等。
- 备案费用:备案本身免费,但需要时间,上海企业一般通过接入商提交。
- 开发费用:如果外包给服务商,按项目复杂度报价,差异较大。
- 维护费用:证书续期、域名续费、接口调整。
上海企业如果已有备案域名和服务器,配置JS安全域名基本只花人力时间,如果没有域名,先买域名、做备案、部署验证文件,再回公众号后台配置。
订阅号js安全域名配置不生效怎么办?排查清单
后台验证失败
- 验证文件打不开,返回404或403。
- 域名有重定向,从A跳到B。
- CDN或对象存储缓存了旧文件。
- 域名未备案或备案信息异常。
- 填写时带了协议、端口、路径或通配符。
invalid signature常见原因
- 签名URL和当前页面URL不一致,包括参数顺序、编码。
jsapi_ticket过期,或缓存串号。access_token与appId不匹配。nonceStr、timestamp前后端不一致。- 签名拼接顺序错误,漏掉
&或参数名写错。 - 服务器时间偏差过大。
- 微信客户端缓存,可退出重进或换设备测试。

权限与缓存
- 订阅号未认证,部分JS接口无权限。
- 公众号后台未添加开发者或IP白名单。
- 测试号与正式号配置混用。
- 页面在微信外打开,部分接口不可用。
订阅号js安全域名使用中的注意事项
域名边界
JS安全域名不支持通配符,填写 www.example.com,通常不代表 m.example.com 自动生效,子域名要单独规划,后台可配置数量有限,具体以页面提示为准,每月修改次数也有限制,上线前应确认域名。
安全合规
appSecret只放服务端。- 签名接口做频率限制和来源校验。
- 使用HTTPS,避免中间人篡改。
- 不要把安全域名当成访问控制,它只控制JS-SDK调用资格。
开发测试建议
- 先用测试号验证签名流程。
- 用微信开发者工具查看请求和错误。
- 记录每次签名用的URL、ticket、时间戳。
- 上线前检查分享、拍照、扫一扫等核心路径。
订阅号js安全域名常见问答
订阅号js安全域名必须备案吗?
境内服务器域名通常需要ICP备案,未备案域名可能无法通过微信验证,使用境外服务器时,也要确保域名可访问且符合微信平台规则,备案信息要与实际接入商保持一致,避免验证失败。
订阅号js安全域名可以填IP或端口吗?
不能填IP,也不能带端口,微信要求填写域名形式,h5.example.com,本地开发可用内网穿透生成临时域名测试,但正式环境应使用已备案的固定域名。
订阅号js安全域名和网页授权域名可以填同一个吗?
可以填同一个,只要域名已验证,两者在公众号后台是两个独立配置项,JS安全域名管JS-SDK调用,网页授权域名管OAuth2.0获取用户信息,授权回调路径和JS-SDK签名URL要按各自规则分别处理。