Angular POST成为OPTIONS,无法更改CORS的后端

时间:2018-10-20 05:39:26

标签: angular cors angular-httpclient

我要提出登录请求。我需要使用一些参数(例如用户名,密码,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请求

我该如何解决这个问题?

0 个答案:

没有答案