场景:最近使用vue开发了一个H5页面,入口为 url/index.html。手机端使用webview调用该页面。
问题:进入该页面后,数据无法显示。
分析:
1、可以进入该页面,说明配置没有问题。
2、数据没有显示,应该是http请求过程中出现了问题。
问题可能的来源:
1、手机端没有将token传给H5页面(因为http请求后台要验证会话)。
2、后台没有根据token成功恢复会话。
3、存在跨域问题,需要后台支持跨域。
4、本身就没有数据。
验证方法:
1、由于手机端不能看到console.log中的内容,于是将手机端传过来的查询字符串打印在body中,在其中可以看到token的值,问题来源1被排除。
2、在数据库中拿到token的值,在游览器端不登录系统,直接输入url/index.html?token=tokenValue,结果可以正常访问,排除问题来源2。
3、在java代码增加对跨域的支持,在过滤器中增加对response的CORS处理,结果依然没有数据,排除了问题来源3(此时没有直接排除,以为对response的处理有问题)
4、使用fiddler录制请求,发现得到的结果确实是空。
经验:
走了一圈回到原点,欲哭无泪,但是也get到了一些东西。测试在PC端使用管理员权限登录,而在手机端使用网格员权限登录,而网格员的权限是没有配置菜单栏权限的,这是问题的主要所在(配置后即可显示)。
学到了什么:
1、对token会话的理解更深。
2、增强了对跨域的理解。
3、学会了fiddler的使用。
网友评论