当uni app开发H5App时,微信授权回调地址中有一个#
app开发
APP开发
浏览:1249 次

我刚换了工作,老板派我做企业微信应用。第一次用uni app开发H5App是第一次使用vue.js。我看过一些官方教程,我花了大约一周的时间才开始。
总有新的问题,其中一些问题可以由百度解决。然而,这困扰了我很长一段时间,因为Vue的默认地址是哈希模式,地址中有#。发送到微信的回调地址将截断#后面的内容,导致回调失败。
目前,系统使用Nginx代理,配置如下:
位置/移动{
proxy_set_header主机$Host;
代理通行证https://127.0.0.1:8088 ;
}
有三种主要的在线搜索方法:
设置页面传输。但目前,该系统的前端使用vue。js,并且所有地址都有#编号,因此不适合。
切换到历史记录模式。如果在互联网上配置了nginx,它仍然无法工作。在许多地址访问中有502个错误。
用nginx重写地址也花了很长时间,但没有生效。
第二种和第三种方法都需要更改nginx,但我不太熟悉。复制联机配置也不好。试用期不应该浪费太多时间,所以我们必须另辟蹊径。
发现所有地址,包括那些有错误的地址,都可以在模板html页面中截取。因此,我们截取并处理模板页面中的特殊地址,然后跳转到带有#的页面。
aaaa.png
以下代码将添加到template.h5.html文件中:

//拦截企业微信回拨页面
var url=window.location.href;
如果(url.indexOf('/WXLOGINX/')>0&;网址。indexOf('代码=')>0){
var代码=getQueryString('code');
var newUrl=“/mobile/#/pages/login/WxLogin?code=”+code;
window.location.href=newUrl;
}
/**
*从URL中查找参数的值,Elwin ZHANG 2021-4-13
*@param{Object}param参数
*/
函数getQueryString(参数)
{
让查询=window.location.search.substring(1);

varvars=query.split(“&”);
对于(var i=0;i var pair=vars[i].split(“=”); if(pair[0]==param){return pair[1];} } 返回null; } 今天,我再次尝试了第二种方法。可以切换到历史模式。nginx配置更改如下: 与昨天的配置不同的是try_Add last-after files。 位置/移动{ proxy_set_header主机$Host; 代理通行证https://127.0.0.1:8088 ; try_文件$uri$uri//索引。html最后; }