微信签名算法,上传当前页面url的疑问

微信js-sdk文档中说,获取配置,需要上传当前页面的url,不包含#及其后面部分,那么如果我的网页是SPA,使用的是hashbang模式,每个url的形式都是example.com/#!/home,那么这里的#号是否会影响签名的正确性。

阅读 7.3k
2 个回答

既然明确说明了不包含锚点,那就不应该把锚点计算进去,否则你的签名就是错的了。

比如下图的 location 对象:

图片描述

直接取 location.href 会导致锚点也被取到,可以考虑去掉,如

var url = location.href;
if (location.hash.length) {
    url = url.substr(0, url.indexOf(location.hash));
}

但实际上,因为计算需要 ticket 之类的东西,为了避免暴露敏感信息,签名应该是后端计算好之后返回给前端的。

而后端获取当前请求的 URL 时,因为锚点不会传递到服务器,是不会获取到锚点的,这种情况下可以不用关心这个问题。

建议还是采用 history 模式。

然后才做地址签名的时候,取当前地址用以下代码:

document.URL

这是取当前文档地址,在IOS机器中也能避免 location.href 取地址不对的问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题