Angular Put方法返回未经授权
我是Angular的新手,我有这样的服务:Angular Put方法返回未经授权,angular,jwt,Angular,Jwt,我是Angular的新手,我有这样的服务: readonly rootUrl = "http://myapi.net/"; private serviceUrl = "http://myapi.net/api/usuarios/listar"; headers = new Headers({ Authorization: "Bearer " + JSON.parse(localStorage.getItem("currentUser")).token, "C
readonly rootUrl = "http://myapi.net/";
private serviceUrl = "http://myapi.net/api/usuarios/listar";
headers = new Headers({
Authorization:
"Bearer " + JSON.parse(localStorage.getItem("currentUser")).token,
"Content-Type": "application/json"
});
options = new RequestOptions({ headers: this.headers });
因此,我得到了用户通知,然后我创建了如下方法:
constructor(private http: Http) {}
postSwitch() {
var cambioEstatus = this.http
.put(this.rootUrl + "api/usuarios/activar", this.options)
.map((data: any) => data.json());
return cambioEstatus;
}
最后在组件中使用,如:
onFlagChange(event) {
this.UsuariosService.postSwitch().subscribe(
() => {
//React to your HTTP request success
this.toastr.success("Success");
},
err => {
this.toastr.error("Fail");
//React to your HTTP request error
}
);
}
但它总是返回错误401,额外的事情是,如果我和邮递员一起执行它,它不会返回那个错误。还有另一种方法(get),如:
不要抛出此错误,对于put
操作,我还需要做另一件事?问候
看起来像是CORS问题,您需要在服务器上启用CORS或重试 将以下内容添加到标题中
Access-Control-Allow-Origin: *
另外,试着把你的请求传递给body
postSwitch() {
var cambioEstatus = this.http
.put(this.rootUrl + "api/usuarios/activar", body, this.options)
.map((data: any) => data.json());
return cambioEstatus;
}
要启用CORS进行测试,请使用下面的chrome标志
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security
我遇到了同样的问题。。。我认为问题在于put需要一个请求主体,而get不需要,因此在url和选项之间,您需要一个主体,比如
.get(this.rootUrl+“api/empresas/listar”,{},this.options)
chrome.exe --user-data-dir="C:/Chrome dev session" --disable-web-security