在Angular 2中发送帖子时出错

时间:2016-08-09 05:30:39

标签: angularjs angular

Angular 2 post请求显示此错误。

do_login(username: string,password: string): Observable<string> {
    let body = JSON.stringify({"username":username,"password":password});
    let headers = new Headers({ 'Content-Type': 'application/json' });
    let options = new RequestOptions({ headers: headers });

    return this.http.post(this.loginUrl, body, options)
          .map((response) => {
            return response.json();
          }
    );
}

获取请求正常工作。调用REST客户端时,POST url正常工作

enter image description here

我的代码中缺少什么。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

这是因为CORS。您无法在服务器端处理预检请求。这是405状态代码所说的内容:

  

405方法不允许   请求的资源不支持请求方法;例如,表单上的GET请求,要求通过POST显示数据,或者在只读资源上显示PUT请求。

它适用于GET方法,因为您处于简单请求的情况下,而不是预检的请求。它通常是服务器端问题而不是前端/ Angular2问题。

这些文章可以帮助您了解会发生什么:

答案 1 :(得分:1)

涉及CORS,因为在OPTIONS请求之前有POST请求。

服务器未对OPTIONS请求提供有效响应 - 导致您在上面列出的错误。您将需要调查服务器的CORS配置,因为这就是问题所在 - 不在上面的代码中。

如果GET工作正常,您应该查看Access-Control-Allow-Methods配置