3 回答
TA贡献1799条经验 获得超8个赞
headers
尝试这样设置:
let headers = new HttpHeaders(); headers = headers.set('x-auth-token', xToken).set('Authorization', basicHeader);
进而,
return this.http.post(url, null, headers );
null
按照它body
在第二个参数中接受的方式传递。
使用 HttpClient:
import { HttpClient } from '@angular/common/http';
constructor(private http: HttpClient) { }
在 app.module.ts中:
import { HttpClientModule } from '@angular/common/http';
在@NgModule 中: imports: [ HttpClientModule ]
TA贡献1777条经验 获得超10个赞
这很正常,默认情况下@RequestMapping("/user/logout")只接受GET请求。您必须明确设置方法
@RequestMapping("/user/logout", method = RequestMethod.POST)
public ResponseEntity<String> logout(){
SecurityContextHolder.clearContext();
return new ResponseEntity<String>("Logout Successfully!", HttpStatus.OK);
}
或者使用@PostMapping
TA贡献1865条经验 获得超7个赞
尝试这个:
constructor(private http:HttpClient){}
logout()
{
const url = 'http://localhost:8181/user/logout';
const headers = new HttpHeaders()
.set('x-auth-token', localStorage.getItem('xAuthToken'));
return this.http.post(url, '' ,{headers: headers, responseType: 'text'})};
在 Spring 中,我的建议是使用@PostMappingor @DeleteMappingannotation 而不是@RequestMapping. 使用 as 'text' 的原因ResponseType是因为您提供的是ResponseEntity<>as ofString类型,并且默认情况下 Angular 将响应视为 JSON。
localStorage.removeItem('xAuthToken');此外,请记住在订阅该可观察对象时在响应中使用,并在ngOnDestroy()生命周期中取消订阅该可观察对象。
添加回答
举报