前言
使用Ng-aialin
有一段时间了,虽然有坑,但是还是自己掌握的不熟练,这个问题也困惑了我一段时间
问题分析
- 在使用前端框架不登录时发送
http
请求 - 请求不能发出
- 代码
service:
` public getAll(): Observable<Array<Website>> {
return this.httpClient.get<Array<Website>>(`${this.baseUrl}`);
}`
ts:
`this.websiteService.getAll().subscribe(
(res)=> {
this.websiteList = res;
console.log(res);
},() => {
this.msg.error('error');
console.log('error');
});`
一个非常简单的get请求获取全部的数据
问题
在控制台没有找不到该网络请求
同样控制台也会打印错误
很明显,前台在发送请求时,就没有发送出去(被拦下了),不然控制台不可能没有请求
原因
看了拦截器的代码,发现自己写的拦截器没有任何问题,问了张喜硕顺便查了一下资料。
发现:Ng-aialin
默认实现了拦截器,在发送http
请求的时会默认添加token
,如果没登录,没有token
,它就会将你的请求拦下(它认为你只有登录才能发请求)参考文章
解决办法
在发送http
请求的时候带上_allow_anonymous 参数
允许匿名登录,也就是不带token
是也让它发送请求。
在控制台可以看到发送的请求,但是还有问题那就是报: 401
401 非常常见的状态码,没有权限,那解决也就非常简单了
解决401
由于后台配置了Spring Security
会对后台的任何请求进行认证保护,在请求时没有登录,所以就会出现401的错误了
忽略对该请求的认证保护
请求成功
在此发送请求,状态码200,请求成功
总结
在ng-alain的文档中并没有说明,这也是我掉坑的原因,希望对其他人有所帮助。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。