gpt4 book ai didi

java - 为什么我在尝试从 angular5 向 spring-boot 发送 PUT 请求时收到未经授权的消息?

转载 作者:行者123 更新时间:2023-12-02 11:11:59 24 4
gpt4 key购买 nike

我正在尝试从 angular5 向 spring API 发送 PUT 请求,但出现错误。

这是 Angular 干预.service.ts:

updateIntervention(id:number){
if(this.authService.getToken()==null) {
this.authService.loadToken();
}
return this.http.put(this.host+"/updateIntervention/"+id,
{headers:new
HttpHeaders({'Authorization':this.authService.getToken()})});
}

Intervention.component.ts

valider(ref: Intervention){
this.intervService.updateIntervention(ref.id)
.subscribe((data:any)=>{
console.log('there is no error ! ');
},err=>{
console.log('there is an error ! ');
})

ref.valid = !ref.valid;

}

在 Spring 启动中:

@RequestMapping(value="/updateIntervention/{id}",method = RequestMethod.PUT)
public Intervention update(@PathVariable Long id){

System.out.println("in intevention update");
Intervention I = new Intervention();
I = interventionRepo.getOne(id);
I.setValid(true); // it's boolean , this is the goal from this update
interventionRepo.save(I);

return I
}

作为错误,我得到了 Angular :

{"timestamp":1527443447949,"status":401,"error":"Unauthorized"}

作为 spring-boot 中的错误:

access.AccessDeniedException: Access is denied

PS:当我以 Angular 发送 id 和对象 Ref 时,这是有效的,在 spring 中,我写

 public Intervention update(@PathVariable Long id , @RequestBody Intervention I){ ... }

但我不需要这个,因为我想要的只是修改实体 Intervention 中有效的属性。

我正在使用 httpClient 。

有什么想法吗?

最佳答案

您正在使用的 put 方法具有以下定义:

put(url: string, body: any | null, options)

您将选项对象作为主体参数提供。这就是为什么您会收到未经授权的 401(代表“未经身份验证”)的原因。意味着您的凭据错误或丢失。

你应该改变

return this.http.put(this.host+"/updateIntervention/"+id,
{headers:new
HttpHeaders({'Authorization':this.authService.getToken()})});
}

致:

return this.http.put(this.host+"/updateIntervention/"+id,
null,
{headers:new
HttpHeaders({'Authorization':this.authService.getToken()})});
}

关于java - 为什么我在尝试从 angular5 向 spring-boot 发送 PUT 请求时收到未经授权的消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50555092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com