我要提出登录请求。我需要使用一些参数(例如用户名,密码,clientId等)向服务器发出POST请求。
Angular 6代码:
let body = new URLSearchParams();
body.set('username', email);
body.set('password', password);
body.set('customerId', environment.customerId);
body.set('grant_type', 'password');
return this.http.post<JWT>(
this.baseUrl + this.LOGIN_ENDPOINT,
body.toString(),
{
headers: new HttpHeaders({
'Content-Type': 'text/plain'
})
}
)
当我发出POST请求时,由于未设置Access-Control-Allow-Origin标头,它变成了OPTIONS并且浏览器阻止了响应。但是,在“检查元素”的“网络”选项卡中,呼叫实际上是正确的,并返回200 OK。
我无权更改后端,并且服务器公司未与我合作,因为他们可以使用ajax发出请求。
我尝试过发出相同的请求,除了使用jquery和ajax之外,它工作得很好,问题似乎是由angular 6发送的“复杂请求”。
Ajax代码:
$.post("example.com", {
grant_type: 'password',
customerId: 'xxx',
username: 'xxx',
password: 'xxx'
});
Ajax代码有效,Angular代码触发OPTIONS / Preflight请求
我该如何解决这个问题?