我检索jwt令牌的api post调用响应400错误。这是我的api角度电话。我也尝试过使用URLSearchparams。
authenticateUser(userid: string, password: string) {
// var authorization_grant = "password";
// let body = new URLSearchParams();
// body.append('username', userid);
// body.append('password', password);
// body.append('grant_type', authorization_grant);
let body = 'userName=' + userid+ '&password=' +password +'&grant_type=password';
let headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
headers.append('Access-Control-Allow-Origin', '*');
let options = new RequestOptions({ headers: headers });
return this.http.post(this.config.apiBaseUrl + '/token', body, options).retry(3).map((res: Response) => {
if (res.status == 200) {
this.validatedUser = res.json();
localStorage.setItem("access_token", this.validatedUser.access_token);
}
return this.validatedUser;
})
}
答案 0 :(得分:2)
好的,在调查了Fiddler工具中的流量之后,我比较了从postman和angular调用时的标题。
在客户端: 我删除了行header.append(' Access-Control-Allow-Origin',' *');从我的代码解决了这个问题。
在服务器端 最重要的是,我将app.UseCors(CorsOptions.AllowAll)代码行移到了app.UseOAuthAuthorizationServer的顶部,我在startup.cs中生成了令牌。
感谢@jps,@ biswajit-rout和@Ruard Van Elburg进行调查。