一直做安卓开发,趁着疫情失业,就想着更新一下技术栈,就学了一下 Springboot 和 Vue ,顺便写了个页面,然后在 Android WebView 上加载。
项目后端是 Springboot 写的
前端是 Vue2
前端使用 axios 发送 get 请求:
axios.get('https://www.xxx.com/getXXX?a=1&b=2&c=3', {
headers: {
"Token": "xxxxxxxxx"
}
}).then((res) => {
...
})
后端 Springboot Controller 是这样写的:
@GetMapping("/getXXX")
public Result getXXX(HttpServletRequest request, @RequestParam("a") int a, @RequestParam("b") int b, @RequestParam("c") int c) {
String userId = request.getHeader("Token");
if (userId == null) {
return new Result(false, "未登录操作", null, null);
} else {
return service.getPlans(userId, year, month, day);
}
}
涉及到跨域问题,在 Controller 上加了 @CrossOrigin
注解解决了。
整个过程在浏览器调试的时候是正常的,但是将 Vue 项目打包上传到服务器中,使用 Android webview 来访问的时候,却提示“未登录操作”,也就意味着 request.getHeader("Token")
为 null
我遍历了下 Springboot 接受到的 Header ,只有:
user-agent
host
connection
accept-encoding
也就是说,webview 下
headers: {
"Token": "xxxxxxxxx"
}
是无效的
有人遇到过这样的状况吗?该怎么解决呀
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.