公众号自动回复中的链接无法点击,先检查最终发出的 URL 是否完整。2019 年的项目里,同一条回复在同事 iPhone 上能显示链接,安卓设备上却只有文本;给地址补上协议后,当时的问题解决。
少了协议,地址含义已经不同
原消息把 a 标签的 href 写成只有域名的形式。下面用示例域名说明差异:
<a href="www.example.com">打开页面</a>
<a href="https://www.example.com/">打开页面</a>
在普通网页 HTML 中,第一种可被解释为相对地址,而不是自动指向那个域名的 HTTPS 页面。公众号消息还经过客户端自己的解析,因此不能把浏览器显示结果直接当作消息兼容性测试。URL 解析基础
当年补的是 http://。今天链接目标支持 HTTPS 时,应使用其实际 HTTPS 地址,不应为了复用旧处理而退回明文协议。
两台设备的差异只是这次观察
旧记录没有保存微信版本、安卓版本或完整消息 XML,因此只能保留这一对照:当时 iPhone 与安卓表现不同,补齐 URL 后恢复。它不能证明所有安卓都不兼容,也不能证明 iPhone 总会替开发者补全地址。
同时,消息内容中支持某种链接形式,不代表可以发送任意 HTML 并期待它像网页一样渲染。应按实际消息类型支持的格式组织,正确处理 XML/JSON 层和内容层的转义。
从最终消息检查,而不只看代码字符串
先确认服务端最终输出中的 href、协议和目标域名,再在实际消息类型和入口下观察。若地址有参数,确认没有因为拼接引号或重复转义而截断。
相关的Axios 协议错误发生在前端请求层,与本例的消息展示不同;共同的检查点是 URL,不能互相当作客户端行为证据。