手机微信自动跳转到默认浏览器

有时候我们需要手机微信的链接点开自动跳转到手机默认浏览器上面,有的是使用一个遮罩层提示用户手动操作。下面介绍一个实现方法,不过这个方法只能使用安卓手机,苹果手机没有效果。

先说一下步骤:

  • 如果点击链接时判断是否是微信客户端,如果是添加以下两个响应头:
Content-Type="text/plain; charset=utf-8";
Content-Disposition="attachment;filename=open.apk";
  • 然后返回状态码206就可以了,这样微信客户端就会自动跳转到默认浏览器了。
    非微信客户端不用处理,就可以正常浏览了。

具体实现方法很简单,如果是使用Nginx,添加一下配置:

if ($http_user_agent ~* (MQQBrowser)) {
	add_header Content-Type "text/plain; charset=utf-8";
	add_header Content-Disposition "attachment;filename=open.apk";
	return 206;
}

Java代码实现:

@RequestMapping("/open")
public String open(HttpServletRequest request, HttpServletResponse response) {
	String userAgent = request.getHeader("User-Agent");
	if(userAgent.contains("MQQBrowser")) { // 判断微信浏览器返回以下响应头和状态码
		response.addHeader("Content-Type", "text/plain; charset=utf-8");
		response.addHeader("Content-Disposition", "attachment;filename=open.apk");
		response.setStatus(HttpStatus.SC_PARTIAL_CONTENT); // 设置状态码206
		return null;
	}
	return "weixin";
}

DEMO演示:https://www.acgist.com/demo/weixin/view.html

完整代码:https://gitee.com/acgist/demo/blob/master/acgist-share/2018/WeixinController.java

完整SpringBoot项目:https://gitee.com/acgist/demo/tree/master/weixin