微信分享链接被添加参数导致网页无法正常访问

Android和iOS的APP使用了微信提供的分享功能,而分享到微信内的链接会被添加参数。

例如,原地址是:

http://example.com/page?s=mobile&v=share

但分享到微信后,其他人点击跳转到的地址变成了:

http://example.com/page?s&from=singlemessage&isappinstalled=1

可以看出原参数被破坏,而原网页必须要这几个GET参数才能返回供微信使用的特定版本,所以是有问题的。

那么,有办法可以让在微信在这个过程中不破坏原来的参数吗(例如微信支持某种符合要求的特定格式)?


问题补充:

我觉得,微信本来应该只是添加了参数,并不会破坏原有参数。所以,可能是我APP调用微信的方式不对?

阅读 17k
3 个回答

已找到问题原因。微信本身并不会破坏原有参数,是我APP的处理方法有误。

我APP会收到一长串经过URI编码的字符串,然后需要分析读取内容,再将其发送到微信分享。

例如:

xapp://share?title=xxxxxx&url=zzzzzz&content=yyyyyy

这里的zzzzzz本身是比较复杂的url经过JavaScript的encodeURIComponent()编码后得到的字符串,我在解析的时候,直接上面一整个字符串进行解码,所以原来比较复杂的url中携带的&=就被我误解析了。

改为先解析,然后每一项内容(title、url、content)分别解码就可以了。

也感谢 @phodal。

这个应该是没有办法的。微信会自动添加isappinstalled添加。想办法在后台处理。

//默认显示配置的 title

  let isFromWX = location.href.indexOf("fromWX");
  let urlObjParams;
  if (isFromWX == -1) {
    urlObjParams = OperationUtil.getQueryStringForm(
      location.href.split("?")[1]
    );
  } else {
    urlObjParams = OperationUtil.getQueryStringForm(
      location.href.split("?")[2]
    );
  } 做一个兼容处理,在链接里面加一个参数做区分,然后正常的获取自己的参数 就可以了
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏