微信禁止加载本地html文件,必须通过http/https服务器访问;开发可用python -m http.server,上线需托管至github pages等支持https的平台,并严格配置js-sdk签名与安全域名。

微信根本打不开本地 HTML 文件,别试了
不是你的代码写错了,也不是文件损坏了——微信(iOS 和 Android 全版本)从底层禁止加载 file:// 协议的页面。哪怕你用文件管理器双击打开再点「分享到微信」,对方收到的也只是一个无上下文的路径字符串,微信内置浏览器压根不会尝试解析它。
- iOS 微信完全静默拦截,连控制台错误都不报
- Android 微信部分版本会显示「该网页暂时无法访问」,但不会告诉你协议被拒
- 把 HTML 打包成 ZIP 发过去、对方解压后点击分享——依然无效,因为分享动作不携带运行时环境
必须走 HTTP/HTTPS 服务器才能在微信里打开
微信只信任通过 Web 服务器提供的页面,哪怕是最简陋的本地服务。开发阶段用 Python 起一个临时服务就行,上线则必须托管到支持 HTTPS 的平台。
- 开发调试:终端执行
python -m http.server 8000,然后用微信打开http://你的局域网IP:8000/index.html - 上线部署:GitHub Pages、Vercel、Cloudflare Pages 都免费且自动配 HTTPS;国内可选 Coding Pages 或腾讯云静态网站托管
- 千万别用「本地双击打开 → 复制地址栏 URL → 粘贴进微信」——这时地址是
file:///xxx/index.html,微信直接无视
分享按钮能点,但实际调用不了微信 API?检查签名和域名
想让页面在微信里点右上角「…」后出现自定义标题/缩略图,光写 wx.config 和 wx.onMenuShareTimeline 没用。微信 JS-SDK 要求严格校验,缺一不可。
- 后端必须用你公众号的
AppID和AppSecret获取access_token,再用它 + 当前页面完整 URL 算出signature - 页面 URL 必须和公众号后台「JS接口安全域名」完全一致(含
http://或https://、端口、路径前缀) -
wx.config中的jsApiList必须包含你要用的接口名,比如['onMenuShareTimeline', 'onMenuShareAppMessage'],少一个就失效
不想搞签名?用 meta 标签设基础分享信息
如果你只是希望用户点右上角分享时,卡片至少有标题和图片,又不想搭后端算 signature,可以用微信识别的 <meta> 标签兜底。
立即学习“前端免费学习笔记(深入)”;
- 在
里加:<meta name="wx-share-title" content="我的活动页"> - 加描述:
<meta name="wx-share-desc" content="限时参与,马上开始"> - 加缩略图:
<meta name="wx-share-img" content="https://example.com/icon.jpg"> - 注意:这些只影响「右上角菜单分享」,不影响 JS-SDK 主动调起的分享弹窗;图片必须 HTTPS,且尺寸建议 ≥300×300px











